使用jQuery 1.8和Kohana进行简单的jQuery ajax调用和响应:
$.ajax({
data:{
file: file
},
dataType: 'json',
url: 'media/delete',
contentType: 'application/json; charset=utf-8',
type: 'GET',
complete: function(response){
console.log(response);
console.log(response.file);
}
});
URL的PHP是一个简单的json_encode()页面,它返回:
{"file":"uploaded\/img\/Screen Shot 2012-04-21 at 2.17.06 PM-610.png"}
根据JSLint,这是有效的JSON。
根据firebug的说法,响应头是
Response Headers
Connection Keep-Alive
Content-Length 74
Content-Type application/json
Date Sun, 12 Aug 2012 17:44:39 GMT
Keep-Alive timeout=5, max=97
Server Apache/2.4.1 (Unix) PHP/5.4.0
X-Powered-By PHP/5.4.0
但是在成功函数中“响应”不是我期望的JS对象,我无法访问response.file。相反,它似乎是某种响应对象,其中包含readyState,responseText,status等字段。
这里有许多类似的问题,但我相信我根据其他答案正确连接了一切。
我在这里缺少什么?
答案 0 :(得分:0)
complete:
回调不提供响应,因为它的参数。来自jQuery doc for $.ajax()
:
complete(jqXHR, textStatus)
因此,您所看到的完整函数的参数是jqXHR对象,而不是解析后的响应。这很可能是因为完成ajax调用后调用complete是否成功。获取成功解析的JSON响应的是success
处理程序。
您可能希望改为使用success:
回调。
$.ajax({
data: {file: file},
dataType: 'json',
url: 'media/delete',
contentType: 'application/json; charset=utf-8',
type: 'GET',
success: function(response){
console.log(response);
console.log(response.file);
}
});