意外的令牌<在JSON的第2位jquery自动完成

时间:2016-09-13 03:44:41

标签: jquery ajax jquery-ui-autocomplete

我有一个带有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" />

3 个答案:

答案 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

您必须在https://jsonformatter.curiousconcept.com/

处有效的json字符串