【发布时间】:2013-01-11 23:22:41
【问题描述】:
谁能详细说明可能出了什么问题?在这一点上,我不知道要寻找什么。
示例代码:
$.ajax({
url: uploader.fileupload('option', 'url'),
context: uploader,
success: function(response){
//logging uploader
console.log(uploader);
//logging this --> logs the same as logging uploader
console.log(this);
//loggin response --> clearly shows a context attribute holding the correct data for this response
console.log(response);
//logging response.context --> shows undefined
console.log(response.context)
var done = uploader.fileupload('option','done');
done.call(this, null, response);
},
dataType:"json"
})
我不习惯在 $.ajax() 调用中使用 context 属性,我怀疑这个功能会导致我的问题。
在 ajax 调用后的一段时间内,sn-p 会导致我的代码出现问题。我很确定这与 ASYNC 问题无关,因为问题已经存在于原始 ajax 请求的实际成功回调中。
我已禁用发送的 php-headers,但它保持不变。我根据另一个主题尝试了这个,这意味着我的标题可能有问题。 我还禁用了 $.ajax() 中的 dataType attr,但是我的响应不被识别为 json。
非常感谢任何有关如何调试的帮助或提示!
更新: 删除 ajax 调用中的 context 属性确实解决了这个问题。 但是为什么当 console.logging()
时它会被附加到我的响应对象中(或者至少似乎被附加了)【问题讨论】:
-
您的
done函数看起来如何。我认为应该是done.call(this,response),但由于您使用上下文,您也可以使用this.done(response) -
console.log(JSON.stringify(response))带给你什么? -
您确定响应被视为 JSON 并被解析为对象吗?也许
response只是一个字符串。 (尝试做console.log(typeof response)检查) -
@Matt -> console.log(JSON.stringify(response)) 给出了正确答案并且不包含上下文属性..
-
@Bodybag:因为
console.log(typeof response) outputs object和console.log(response.context)显示undefined但console.log(response);拥有上下文属性,我认为您稍后会以某种方式添加它。就像 Raffaele 说的,控制台显示了对象的实际内容,而不是您执行 console.log 时的内容,因此如果您稍后在查看其内容之前对其进行更改,您将在控制台中看到这些更改。
标签: javascript properties