我不知道为什么,但是在进行ajax调用时我遇到了$.parse
JSON的问题,我需要检查响应是否包含JSON,然后继续用$.parseJSON解析它,如果它不包含任何JSON然后它将打印出一个元素中的响应(响应将包含一些HTML).
然后我测试了eval是否可以做任何事情,当然这样做了,但我不想为此使用eval.
我得到的代码:
$.ajax({ url: 'ajax.PHP',success: function(response) { var msg = $.parseJSON(response); //alert(typeof(response)); <-- returns 'string' //alert(typeof(msg)); <-- returns 'object' //alert(msg.error); <-- this doesn't work at all. //eval(response) <-- returns [object Object] if(msg.error !== '') { ajaxWindow.html(msg.error); } else { ajaxWindow.html(response).hide().slideDown('slow'); } } });
那么为什么它无法解析JSON字符串呢? jQuery.parseJSON清楚地说:
Takes a well-formed JSON string and returns the resulting JavaScript object.
编辑:JSON:
[{"error":"Error loading template"}]
解决方法
你有一个数组,所以你需要通过第一个索引访问它.
代替:
alert( msg.error );
做:
alert( msg[0].error );