所以,我能够成功返回我的AJAX请求,但是一旦我从中声明了一个变量,我的jQuery似乎就死了。
这是我从控制台发出的 JSON 响应:
Object {readyState: 4, responseText: "{"rsp":"1","msg":"show out screen!","time":null,"fn":"Mike","ln":"Maynard","ul":"0"}", status: 200, statusText: "success"}
这是我的jQuery:
$.ajax({
url: "clock.php",
type: "POST",
async: false,
data: clockData,
cache: false,
timeout: 5500,
error: function (clockData) {
//var rsp = (clockData.fn);
alert('Error');
//do error
},
dataType: 'json',
complete: function (clockData) {
console.log(clockData);
var rsp = clockData[0].rsp;
console.log(rsp);
var ul = clockData[0].ul;
if(ul=='1') {
showUi();
}
var una = (clockData.fn + ' ' + clockData.ln);
$('.nameBlock').text(una);
$('.nameBlockFirst').text(clockData.fn);
//--> show in ui
if (rsp=='0') {
console.log('got here2');
var dir = 'In'; tcShow(dir);
}
//--> show out ui
if (rsp=='1'){
alert('trying to show out screen2');
var dir = 'Out'; tcShow(dir);
}
//--> show in result
else if (rsp=='2'){
var time = (clockData.time); var dir = 'in'; showResult(time,dir,ul);
}
//--> show out result
else if (rsp=='3'){
var time = (clockData.time); var dir = 'out'; showResult(time,dir,ul);
}
//--> show message
else if (rsp=='4'){
endClock();
}
else {
endClock();
}
}
});
所以,控制台.log(时钟数据);返回正常,但控制台.log(rsp);永远不会发生...我很困惑..
根据您的响应文本,它看起来应该是clockData.rsp
的。您正在执行clockData[0].rsp
这意味着 clockData 是一个数组。但实际上,您的响应是一个键控对象,而不是数组。
编辑:我刚刚注意到您也在使用complete
方法,而不是success
。 complete
的方法签名为 (jqXHR, textStatus)。如果你想要响应数据,你可以通过JSON.parse(clockData.responseText)
访问它,或者更好的是,使用方法签名为(responseData,textStatus,jqXHR)的success
回调。或者对于更现代的方法,请使用承诺。
参考: http://api.jquery.com/jquery.ajax/