我正在努力解决这个问题。
我正在尝试使用$ .ajax将元素数据传递到我的php文件,它总是返回空。
这是我的代码:
strJson = '{'
$.each(this_side.data(), function(i, v) {
strJson += i + ":'" + v + "',";
});
strJson += term_id + ":'" + term_id + "',";
strJson += new_page_num + ":'" + new_page_num + "'";
strJson += '}';
alert(strJson); // this works
$.ajax({
url: 'my url here',
type: 'post',
data: strJson,
success: function(data){
alert(data);
}
});
$ _POST的Outpot是一个空数组。它不起作用。
我在这里缺少的是什么?
答案 0 :(得分:1)
不要打扰dataType
和contentType
,jQuery应该自己解决这个问题。
this_side.data()
返回什么?如果它是一个数组,那么i
循环中的$.each
变量就是一个数字,而你的JSON格式错误。试试
$.each(this_side.data(), function(i, v) {
strJson += "'" + i + "':'" + v + "',";
});
然后你还应该发布一个JSON对象,而不是一个JSON字符串:
$.ajax({
data : JSON.parse( strJson ),
...
})
当this_side.data()
返回一个对象并且键具有' - '等“特殊”字符时,也会考虑到这一点。
如果this_side.data()
返回一个对象,则以下方法更容易:
$.ajax({
url: 'my url here',
type: 'post',
data: $.extend(
this_side.data(),
{'term_id': term_id, 'new_page_num' : new_page_num }
),
success: function(data){
alert(data);
}
});
答案 1 :(得分:0)
由于lordVlad评论更新了答案:
strJson = '{'
$.each(this_side.data(), function(i, v) {
strJson += i + ":'" + v + "',";
});
strJson += "'"+ i + "':'" + v + "',";
strJson += new_page_num + ":'" + new_page_num + "'";
strJson += '}';
尝试将dataType
和'contentType'添加到您的代码
$.ajax({
url: 'my url here',
type: 'post',
data : JSON.parse(strJson),
dataType: 'json',
success: function(data){
alert(data);
},
contentType: "application/json; charset=utf-8"
});
您也可以查看官方文档:http://api.jquery.com/jQuery.post/
答案 2 :(得分:0)
试试这个:
$.ajax({
url: 'my url here',
type: 'POST',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: { param: strJson },
success: function(data){
alert(data);
}
});
答案 3 :(得分:0)
尝试添加dataType:"json"
:
$.ajax({
url: 'my url here',
type: 'post',
data: $.parseJSON(strJson),
dataType: "json",
success: function(data){
alert(data);
}
});
并在发送之前用strJson
解析$.parseJSON()
。
答案 4 :(得分:0)
在data参数中,您将以json格式发送字符串。
尝试按以下格式发送数据。
strJson='name=Will&address=florida';
如果有效,请告诉我。