我想使用jQuery $.ajax
来发送一些POST信息来发送一些信息(通过POST,如:page.aspx?var1=value
....)。
但我也希望jQuery处理该服务返回JSON,以便我返回一个JSON对象。
var data = {name: _name, ...};
var request = $.ajax({
url: url,
type: "post",
data: data,
//dataType: "json"
});
一旦我使用dataType: "json"
,它允许我接收JSON对象,我就会得到一个关于请求的解析错误!
希望你能帮我解决这个问题!
感谢先生!
答案 0 :(得分:8)
从请求的网址中,您必须以JSON格式制作数据 像
echo json_encode($response);
然后你将获得成功函数的响应JSON,如下所示:
$.ajax({
type:"POST",
url: "your_url",
data:data,
success: function (response){
var arr = $.parseJSON(response);
}
});
答案 1 :(得分:0)
确保您的服务器端脚本返回编码的json。
在php中使用json_encode()
。
echo json_encode($response);
还在dataType : 'json'
来电中设置$.ajax
。
答案 2 :(得分:0)
首先,post请求后面没有附加参数。您指定的格式适用于GET请求。 您可以通过以下方式实现相同的目标:
$.post(
'/yourURLL',
{'data' : dataJson},
function(data){
handleIncomingJSON(data);
}).error(function(data, textStatus){handleUnsuccessfulSave(data, textStatus)});
答案 3 :(得分:0)
根据jQuery $.post
documentation,我强烈建议您最初实施所有主要的回调方法(done
,fail
,always
),以便在您的JSON出现错误时回应然后他们不会被隐藏:
var jqxhr = $.post(
"example.php",
function(response) {var arr = JSON.parse(response);},
'json'
)
.done(function() {console.log( "second success" );})
.fail(function() {console.log( "error" );})
.always(function() {console.log( "finished" );});