为什么JSON.parse不起作用?

Fri*_*ias 7 javascript json

我将dataType设置为'text',因为我不想让Jquery自动解析我的JSON.我的代码如下:

var membId = '5';
$('#submitNewDescription').live('click',function(){
    //An ajax request is made to update the DB
    $.ajax({
        url: '../../cgi-bin/qualification.py',
        type: 'POST',
        data: ({newDescription:$('#newDescription').val(),id:membId}),
        dataType: 'text',
        cache: 'false',
        success: function(data){
            json = JSON.parse(data);
            console.log(data);
            console.log(json);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

它在两个console.log命令中返回字符串:{"error":["ORA-01031权限不足"]}.这意味着解析不起作用,因为它不返回JavaScript对象.JSONLint对我说这是一个有效的JSON.

任何人都知道发生了什么?

谢谢

编辑

我可以设置'json',这不是问题.问题是JSON.parse和$ .parseJSON应该可以工作.由于它们不是,我将'dataType'更改为'json',但返回相同的字符串.我不知道发生了什么.

Bra*_*tie 7

可能是因为你正在寻找$.parseJSON?另外我认为 jQuery会查看数据并在解析之前做出最佳猜测,然后再将其传递给回调.所以,如果它看起来像JSON的机会是jQuery已经给你一个JavaScript对象,然后无法使用JSON.parse/ 重新解析$.parseJSON.

您也可以将您的dataType字段更改为'json'并让jQuery为您执行此操作...

  • 绝对只是让jQuery为你做. (3认同)