AJAX - 提交多个POST数据

时间:2017-01-23 07:12:38

标签: javascript php jquery ajax

我正在拼命尝试通过AJAX提交多个POST变量,但是无法设法让格式正确...问题是我有一个硬编码/写入action=problem_lookup变量和一个动态字段输入$(this).val并且无法将两者合并为一个数据字符串......

这很有效:

data: 'problem=' + $(this).val(),

这不是:

data: { action: 'problem_lookup' , problem: $("problem").val() },
data: { action: 'problem_lookup' , problem: $(this).val() },
data: { action: problem_lookup, problem: $(this).val() },

我尝试了很多来自其他线程的格式并查看了官方的jquery手册,但似乎无法解决这个问题。任何帮助表示赞赏。

编辑:

下面的完整脚本,尝试了迄今为止发布的解决方案但没有成功。 $("problem")是一个<select>字段(运行Select2)因此不应该让我感到非常沮丧,特别是因为data: 'problem=' + $(this).val(),的原始方法可以正常工作。

$(function () {
    $('#problem').change(function () {                      // on change in field "problem"

    var data = {
        action: 'problem_lookup', 
        problem: $("problem").val()
    }

        $.ajax({                                            // launch AJAX connection
            type: 'POST',                                   // via protocol POST
            url: 'ajax.php',
            //data: 'problem=' + $(this).val(),             // send $_POST string
            //data:"{'action':'"+action+"','problem':'"+$(this).val()+"'}",
            //data:"{'action':'problem_lookup','problem':'"+$(this).val()+"'}",
            //data: { action: 'problem_lookup' , problem: $("problem").val() },
            //data : data_string,
            data: $.param(data),
            dataType: 'json',                               // encode with JSON
            success: function (data)
            {
                // do something
            },
        });
    });

});

3 个答案:

答案 0 :(得分:1)

尝试 FormData() FormData

var data = new FormData();
data.append('action', value);
...

答案 1 :(得分:1)

您需要首先指定数据变量:

var data = {
    action: 'problem_lookup', 
    problem: $("problem").val()
}

AJAX 中使用$.param

序列化您的数据
data: $.param(data),

注意:两次检查$("problem").val()是否正确。如果problem是一个类,则需要指定$(".problem").val()或者如果是ID,$("#problem").val()

答案 2 :(得分:1)

问题在于

          $("problem")

Jquery电话。

if.problem是一个css类,请尝试

          $(".problem")

如果问题是css id,请尝试使用

       $("#problem")

对于发布对象数组,您可以将数据构建为包含数组的对象,从而改变您的结构。像这样的东西

 Var obj={};
 obj.postData=[];
 obj.postData.push(/*your first object here*/);
 ...
 obj.postData.push(/*your n-th object here*/);


    $.ajax({    
         .....
        data:obj;
        ......
     });