jQuery parseJSON对象问题

1 投票
2 回答
1063 浏览
提问于 2025-04-16 20:10

我最近在玩jQuery的parseJSON和simplejson,但我搞不清楚为什么我的变量无法打印或比较。

我知道我的Python返回语句是正确的,因为如果不正确,jQuery.ajax就会返回false,然后会执行“错误”代码。所以我不太确定我在jQuery上做错了什么。

这是我尝试使用的代码:

Python/Django的返回语句...

return HttpResponse(json.dumps({'result': True}), mimetype='application/json')

jQuery/javascript...(.ajax函数...我只保留了好的部分)

        success: function(data, textStatus, jqXHR) {
              jQuery(".signup").attr('disabled', false);
              //parse return data
              var obj = jQuery.parseJSON(data);
              if(obj.result == true){
                //$('.signup-area .heading').hide();
                //$('#signup').hide();
                $('.success').show().append(obj.result);
              }
              else{
                $('.signup-area .heading').hide();
                $('#signup').hide();
                $('.success').show().append('in the else');
              }
        },
        error: function(jqXHR, textStatus, errorThrown) {
              jQuery(".signup").attr('disabled', false);
              $('.fail').show().append(errorThrown);
        }

相关问题:

2 个回答

1

我最近遇到了这个问题,原因是我在我的JSON中使用了单引号,而parseJSON认为这样是不合法的。

$.parseJSON("{'key':'value'}")
Invalid JSON: {'key':'value'}
$.parseJSON('{"key":"value"}')
Object

我发现这个问题的方法是从Chrome的JS控制台调用parseJSON。然后我通过在JSONLint上检查我的JSON来确认这是问题所在。

1

据我所知,jQuery的ajax函数有一个叫做'dataType'的参数,你可以把它设置为'json',这样jQuery就会自动把数据解析成JSON格式。这样的话,你就不需要再调用parseJson来处理响应数据了。

就像这样:

jQuery.ajax({
url:url,
dataType:'json',
success:function(data){
//这里的data已经是JSON格式了,所以不需要再解析一次。
},
error:function(){}
});

希望这对你有帮助。

撰写回答