如何将JavaScript对象与html表单一起发送?
我有一个HTML表单,它有很多输入字段。当用户输入其中一个对象时,JavaScript会生成一些对象,其中包含我访问服务器所需的数据。我知道我可以用AJAX发送这些对象,但我需要它们在服务器端(我使用flask作为后端)时,与表单中的正常数据具有相同的功能。是否有任何方法可以将对象与表单一起发送,以便它们以某种方式结束在同一个位置 以下是表格的开头:如何将JavaScript对象与html表单一起发送?,javascript,forms,Javascript,Forms,我有一个HTML表单,它有很多输入字段。当用户输入其中一个对象时,JavaScript会生成一些对象,其中包含我访问服务器所需的数据。我知道我可以用AJAX发送这些对象,但我需要它们在服务器端(我使用flask作为后端)时,与表单中的正常数据具有相同的功能。是否有任何方法可以将对象与表单一起发送,以便它们以某种方式结束在同一个位置 以下是表格的开头: window.addEventListener( "load", function () { function sendD
window.addEventListener( "load", function () {
function sendData() {
const XHR = new XMLHttpRequest();
// Bind the FormData object and the form element
const FD = new FormData( form );
// Define what happens on successful data submission
XHR.addEventListener( "load", function(event) {
alert( event.target.responseText );
} );
// Define what happens in case of error
XHR.addEventListener( "error", function( event ) {
alert( 'Oops! Something went wrong.' );
} );
// Set up our request
XHR.open( "POST", "https://example.com/cors.php" );
// The data sent is what the user provided in the form
XHR.send( FD );
}
// Access the form element...
const form = document.getElementById( "myForm" );
// ...and take over its submit event.
form.addEventListener( "submit", function ( event ) {
event.preventDefault();
sendData();
} );
} );
任务类型
正在进行/重复
一次性
...
下面是当Iconsole.log()
其中一个对象(有多个,但它们非常相似)时的输出:
你要么开着一个罐子,要么开着一个罐子。不过,避免DOM更新并使用JS可能更简单:
来自MDN:
使用绑定到表单元素的FormData
还可以将FormData对象绑定到元素。这将创建一个FormData对象,该对象表示表单中包含的数据
HTML是典型的:
<form id="myForm">
<label for="myName">Send me your name:</label>
<input id="myName" name="name" value="John">
<input type="submit" value="Send Me!">
</form>
不过,我建议用fetch请求替换XHR,或者使用您正在使用的任何库来代替它。这是最灵活的,因为您现在可以处理如何发送FormData。您可以将其更改为JSON,并使您在服务器上的处理变得更加简单。若要使用“普通”表单提交某些对象,请。。。您可以将它们作为字符串存储在一些隐藏的输入元素中 您必须在python端解析该字符串
让某个对象={
姓名:“约翰”,
最后:“Doh”
}
//字符串化对象并将其存储在隐藏输入中
让hidden_input=document.querySelector(“[name='js_object']”)
hidden_input.value=JSON.stringify(某些_对象)
//就为了这个演示。。。记录某事。
文件。查询选择器(“表格”)。添加的文本列表器(“提交”,功能(e){
e、 预防默认值()
console.log(隐藏的输入值)
console.log(typeof(hidden_input.value))
})
提交
有要显示的代码吗?@GetSet没有,我不知道怎么做,所以我没有任何东西可以尝试。我不认为发布html会有帮助,因为它是一种非常通用的形式。如果你认为我应该的话,我可以。即使发布你的html也会有助于形成你问题的背景。不发布任何东西都会导致猜测,一个黑匣子。我的对象最终如何被发送?在这个例子中它叫什么?
window.addEventListener( "load", function () {
function sendData() {
const XHR = new XMLHttpRequest();
// Bind the FormData object and the form element
const FD = new FormData( form );
// Define what happens on successful data submission
XHR.addEventListener( "load", function(event) {
alert( event.target.responseText );
} );
// Define what happens in case of error
XHR.addEventListener( "error", function( event ) {
alert( 'Oops! Something went wrong.' );
} );
// Set up our request
XHR.open( "POST", "https://example.com/cors.php" );
// The data sent is what the user provided in the form
XHR.send( FD );
}
// Access the form element...
const form = document.getElementById( "myForm" );
// ...and take over its submit event.
form.addEventListener( "submit", function ( event ) {
event.preventDefault();
sendData();
} );
} );