2017-02-14 118 views
3

我正在JSON中发出一个AJAX请求响应。 我的Ajax代码是Chrome没有完全安装JS对象

$.ajax({ 
    type: "POST", 
    url: "admin/vendors_post.php", 
    data: "vendet_req=fetch&venid="+sel_ven, 
    dataType: 'json', 
    beforeSend: function(){ 
     $('#trans_loader').css("display", "table"); 
    }, 
    success: function(response){ 
     console.log(response); 
    } 
}); 

Consoling the object shows

When consoled object is explored

的问题是,我在响应已经接收到对象没有显示探索时一些对象属性。但是当我尝试使用点符号明确地调用它们时,我会得到适当的值。我浪费了我的时间去寻找那些当我控制整个响应对象时没有显示的变量。作为参考,当探索控制台对象时,不会显示属性'id','com_name','cat_name'等(请参阅上面附加的图像编号2)。

可能是什么问题?为什么这个对象并没有被所有的属性所安慰?我正在使用jQuery 2.2.0。并在服务器端使用php 5.4.31。

注意:每个JavaScript的对象大小为24,而从服务器发送的实际大小是29.虽然我可以显式访问这5个属性。我在'json_encode()'之后发送来自php post文件的数据。

+0

我可以在第一张图片中看到它们完美无缺 – madalinivascu

+1

是否有可能,某件事正在改变您的数据?当您将数据记录到控制台时会发生这种情况,并且在您展开数据时,这些值将显示为已更新。 –

+0

@madalinivascu是的。我注意到了,但是在探索完所有属性之后,它就消失了。 –

回答

2

添加我的评论在这里,所以它更容易从文献发现:

如果还有的console.log(),当你展开控制台中的项目,这可能发生之间的数据转换。

当数据被记录到控制台,它是你后的状态,但是如果有什么改变了你的数据在整个代码,在浏览器的控制台的条目将引用更新值。

0

请尝试使用

console.log(JSON.stringify(response)) 
1

是。 @Alex是正确的。 @Yogesh尝试避免该函数调用并检查控制台。

+1

你可能已经把它作为评论。我知道你需要一些代表,但如果你想发表评论,我仍然建议使用评论部分。 – KarelG

1

这与jQuery或PHP没有任何关系,它是Chrome的工作原理。

两件事情需要注意:

  1. 在Chrome中,当你在对象上使用的console.log,它只显示第5个属性,而不对它们进行排序。展开对象时,它会显示所有属性按字母顺序排序
  2. As @AlexSzabó表示,如果在使用console.log()后对象属性发生变化,展开对象将在展开时显示当前属性。
相关问题