繁体   English   中英

为什么JSON.parse不起作用?

[英]Why JSON.parse is not working?

我将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);
        }
    });
});

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

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

谢谢

编辑

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

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

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

dataType: 'text'更改为dataType: "json"以及JSON.parse更改$.parseJSON

所有浏览器中都不存在JSON库。 你可能需要包括你自己的http://developer.yahoo.com/yui/json/

或者像其他人建议的那样,使用jQuery。 您可能还想声明jsonvar json = ...

就我而言,我按照以下方式工作:

  • 从服务器(servlet),我指定json作为响应的数据类型
  • 然后jquery调用已经将响应参数解析为JSON对象(所以我不需要运行$ .parseJSON)...谢谢你https://stackoverflow.com/a/6465506/2162226

请注意我可以: 直接在响应对象中访问json字段

$.ajax({
        type: "POST",
        url: baseUrl,
        dataType: "json",
        data: theData,
        success: function(response) {

                alert(' status = ' + response.status);
                processResponseJSON(response);
        },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM