1

谁能详细说明可能出了什么问题?在这一点上,我不知道要寻找什么。

示例代码:

$.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 调用后的某个时间导致我的代码出现问题。我很确定这与 ASYNC 问题无关,因为问题已经存在于原始 ajax 请求的实际成功回调中。

我已经禁用了发送的 php-headers,但它保持不变。我根据另一个主题尝试了这个,这意味着我的标题可能有问题。我还禁用了 $.ajax() 中的 dataType attr,但是我的响应不被识别为 json。

非常感谢任何有关如何调试的帮助或提示!

更新: 删除 ajax 调用中的上下文属性确实解决了这个问题。但是为什么在 console.logging() 时它会被附加到我的响应对象(或至少似乎被附加)

4

1 回答 1

4

我不确定这是否是您的问题,因为应该更好地说明问题本身。但是看标题,console.log()异步和通过引用传递似乎是一个简单的老问题。

当您调用console.log(object)该对象时,该对象被保留为参考,并且不会立即打印。一段时间后,当实际发生日志记录时,对象可能处于不同的状态(例如,在这种情况下,它可能具有属性)。

相反,当您记录obj.property调用是同步的并且该属性尚未定义时。

于 2013-01-11T14:58:42.583 回答