我不知道为什么,但是在进行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 );