【JavaScript】关于eval("("+result+")")的认识

起因是做现项目时,参用很久之前一个项目的代码,少了一行eval("("+result+")");控制台始终运行不出结果

大致意思是:eval方法是将json字符串转换成json对象

       但更具体的情况(前后端传输json数据,后端echo json_encode()方法把Array形式的查询结果自动转换成json格式输出)时,

这时,如果不加eval函数js是获取不到里面的属性的,根本原因在于——由于json是以“{}”的方式来开始以及结束的,在js中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

       所以把后台传输过来json字符串转换成js的json对象,js就能获取其中的属性了

       

       弄懂了这个,引发了更深层的思考,同样都是后端json_encode输出到前端js,为什么很多js没加eval函数都可以自动转换,后来看到是因为ajax已经加过dataType:'json'了。(制定url的返回值以json格式)

       猛然看到自己之前忘记写ajax第四个参数,如果加上,就不需要再写eval函数了

 


 
原文:https://blog.csdn.net/vapaad1/article/details/78900675
 

 

 

 

 

 

 

 

 

 

posted @ 2019-08-02 11:11  智者见智  阅读(837)  评论(0编辑  收藏  举报