检索POST JSON响应

时间:2016-04-05 13:38:19

标签: javascript jquery json ajax grails

我正在Groovy / Grails平台上编写我的第一个Ajax请求。

    var newDataB = $.ajax({
    method:'post',
    url: url,
    async: false,
    data: {source:"${source}"},
    success: function (response) { 
        jsonData = response;
        var res = JSON.parse(jsonData);
                alert(res);//
    }
});

以下是我的控制器“url”

的回复
    def result = [ value: 'ok' ]
    render result as JSON

但它不起作用,我在浏览器中收到错误消息

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data 
var res = JSON.parse(jsonData);

我不明白,响应似乎是一个很好的格式化JSON?

编辑我按照保罗的建议做了一个印刷品:

如果我执行

    var newDataB = $.ajax({
    method:'post',
    url: url,
    async: false,
    dataType: 'json',
    data: {source:"${source}"},
    success: function (response) { 
        console.log(response)
        console.log(response.value)
        jsonData = response;
    }
});

第一张照片是:

  

对象{value =“ok”}

第二次印刷是

  

确定

如果我想得到结果,那么正确的方法是什么?

我是否必须在语句“success:function(response){”

中分配值

做类似

的事情
var result

var newDataB = $.ajax({
    method:'post',
    url: url,
    async: false,
    dataType: 'json',
    data: {source:"${source}"},
    success: function (response) { 
    result = response.value
    }
});

console.log("result : "+result);

此代码适合我!

或许有一种方法可以获得结果,比如

var newDataB = $.ajax({
    method:'post',
    url: url,
    async: false,
    dataType: 'json',
    data: {source:"${source}"},
    success: function (response) { 

    }
});

var result = newDataB.response.somethingblablabla

var result = OneFunction(newDataB.response)

??????

2 个答案:

答案 0 :(得分:0)

如果你的服务器提供json,你不应该解析它。

您可以使用dataType强制jQuery使用特定类型:

var newDataB = $.ajax({
    method:'post',
    url: url,
    async: false,
    dataType: 'json',
    data: {source:"${source}"},
    success: function (response) { 
        console.log(response);

    }
});

答案 1 :(得分:0)

只需使用JSON.stringify()

,就可以在将对象传递给解析函数之前对其进行字符串化
var newDataB = $.ajax({
        method: 'post',
        url: "${createLink(controller: 'util',action: 'test')}",
        async: false,
        data: {source: "abc"},
        success: function (response) {
            jsonData = response;
            var res = JSON.parse(JSON.stringify(jsonData));
            console.log(res);//
        }
    });

希望这可能会有所帮助。