我正在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)
??????
答案 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);//
}
});
希望这可能会有所帮助。