所以,我能够成功返回我的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();
}
}
});
所以,console.log(clockData);返回正常,但是console.log(rsp);永远不会发生......我很困惑......
答案 0 :(得分:1)
根据您的回复文字,它看起来应该是clockData.rsp
。你正在做clockData[0].rsp
这意味着clockData是一个数组。但实际上,您的响应是一个键控对象,而不是数组。
编辑:我刚刚注意到您也在使用complete
方法,而不是success
。 complete
的方法签名为(jqXHR,textStatus)。如果您需要响应数据,可以通过JSON.parse(clockData.responseText)
访问它,或者更好的是,使用具有方法签名(responseData,textStatus,jqXHR)的success
回调。或者对于更现代的方法,使用promises。