我正在拼命尝试通过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
},
});
});
});
答案 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;
......
});