我有一个带有jQuery" autocomplete"的AJAX请求,如下面的代码:
var clientesList = [];
$("#clientes").autocomplete({
source: function (request, callback) {
$.ajax({
type: "POST",
url: "../../../Cliente/GetClientesByName",
data: "{'nome':'" + request.term + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
debugger;
callback($.map(data.cities, function (obj) {
return obj.Main
}))
}
})
}
})
触发事件时,错误显示在jquery.min ??
中"创建:2未捕获的SyntaxError:意外的令牌<在JSON的位置 2"
我的输入HTML是:
<input type="text" id="clientes" class="form-control col-md-10" />
答案 0 :(得分:3)
我的猜测是,由于您的格式错误的JSON data
属性,您的服务器端资源返回HTML错误,因此响应中出现意外的<
字符。
通过创建有效的JSON字符串修复数据...
data: JSON.stringify({nome: request.term}),
这将产生类似
的值{"nome":"whatever you typed"}
有效而不是
{'nome':'whatever you typed'}
这不是由单引号引起的,可能更糟糕,具体取决于request.term
的值。
答案 1 :(得分:2)
尝试对响应数据进行字符串化并再次解析,看看:
(...)
success: function (data) {
// ----------------------------------------------
// My suggestion
// ----------------------------------------------
// Re-rendering the JSON -> Stringify > Parse
data = jQuery.parseJSON(JSON.stringify(data));
// Debugging the JSON object in console
console.log(data);
// ----------------------------------------------
debugger;
callback($.map(data.cities, function (obj) {
return obj.Main
}))
}
(...)
您可以在相关问题中查看更多相关内容,例如:Parsing JSON giving "unexpected token o" error
答案 2 :(得分:1)
有效的json字符串必须有双引号。
JSON.parse({"u1":1000,"u2":1100}) // will be ok
没有报价导致错误
JSON.parse({u1:1000,u2:1100})
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2
单引号导致错误
JSON.parse({'u1':1000,'u2':1100})
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2
处有效的json字符串