使用查询字符串参数传递表单数据

Pass Form Data with Query String Parameters

我正在使用 $.ajax 到 post 两种形式的 select 值并触发重新安装事件,但我无法传递 Form Data 值。

这是我的click.function

$('button.submitForm').click(function (event) {
     event.preventDefault()
     var form = $(this.form)
     var formCont = new mgFormControler(form.attr('id'))
     var formData = formCont.getFieldsData()

     $.ajax({
          url: form.attr('action') +
               '&loadData='+ form.attr('index') + 
               '&namespace='+ form.attr('namespace') +
               '&index='+ form.attr('index') +
               '&ajax=1' +
               '&mgformtype=' + form.attr('mgformtype'),
               type: form.attr('method'),
               processData: false,
               contentType: false,
               data: formData
          }).done(function (data) {
               console.log(form.attr('id'))
               console.log(form.attr('namespace'))
               data = data.data
               if (data.status === 'success') {
                    console.log(data.status + ': ' + data.message)
               } else {
                    console.log(data.status + ': ' + data.message)
               }
          });
     });
});

dev.tools 中的 header (第一张图片)显示 formData 在查询字符串参数中作为 object 传递, 但我想将其作为单独的元素传递(第二张图片)

我试过 new FormData() 但我总是得到与 object 相同的结果(第一张图片)。

尝试JSON.stringify()

$('button.submitForm').click(function (event) {
 event.preventDefault()
 var form = $(this.form)
 var formCont = new mgFormControler(form.attr('id'))
 var formData = formCont.getFieldsData()

 $.ajax({
      url: form.attr('action') +
           '&loadData='+ form.attr('index') + 
           '&namespace='+ form.attr('namespace') +
           '&index='+ form.attr('index') +
           '&ajax=1' +
           '&mgformtype=' + form.attr('mgformtype'),
           type: form.attr('method'),
           processData: false,
           contentType: false,
           data: JSON.stringify(formData) //add this
      }).done(function (data) {
           console.log(form.attr('id'))
           console.log(form.attr('namespace'))
           data = data.data
           if (data.status === 'success') {
                console.log(data.status + ': ' + data.message)
           } else {
                console.log(data.status + ': ' + data.message)
           }
      });
 });
});

尝试在您的代码中使用:

    type: 'POST',
    data: jQuery.param({ field1: "hello", field2 : "hello2"}) ,
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',