javascript console.log(obj)显示现有属性'context',console.log(obj.context)显示undefined

时间:2013-01-11 14:50:24

标签: javascript properties

任何人都可以详细说明可能出现的问题吗?关于在这一点上寻找什么,我没有真正的线索。

示例代码:

$.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-call中的context属性确实解决了这个问题。 但是当console.logging()

时,为什么它会附加到我的响应对象(或者至少似乎是附加)

1 个答案:

答案 0 :(得分:4)

我不确定这是否是你的问题,因为应该更好地指明问题本身。但是看看标题,似乎console.log()是异步并通过引用传递的普通老问题。

当您致电console.log(object)时,该对象将作为参考而不会立即打印。经过一段时间,当实际发生日志记录时,对象可能处于不同的状态(例如,在这种情况下,它可能具有属性)。

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