Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JavaScript对象与html表单一起发送?_Javascript_Forms - Fatal编程技术网

如何将JavaScript对象与html表单一起发送?

如何将JavaScript对象与html表单一起发送?,javascript,forms,Javascript,Forms,我有一个HTML表单,它有很多输入字段。当用户输入其中一个对象时,JavaScript会生成一些对象,其中包含我访问服务器所需的数据。我知道我可以用AJAX发送这些对象,但我需要它们在服务器端(我使用flask作为后端)时,与表单中的正常数据具有相同的功能。是否有任何方法可以将对象与表单一起发送,以便它们以某种方式结束在同一个位置 以下是表格的开头: window.addEventListener( "load", function () { function sendD

我有一个HTML表单,它有很多输入字段。当用户输入其中一个对象时,JavaScript会生成一些对象,其中包含我访问服务器所需的数据。我知道我可以用AJAX发送这些对象,但我需要它们在服务器端(我使用flask作为后端)时,与表单中的正常数据具有相同的功能。是否有任何方法可以将对象与表单一起发送,以便它们以某种方式结束在同一个位置

以下是表格的开头:

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();
  } );
} );

任务类型
正在进行/重复
一次性
...
下面是当I
console.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();
  } );
} );