2016-09-13 47 views
2

我有與jQuery「自動完成」 AJAX請求,如代碼波紋管:意外標記<在JSON在位置2的jquery自動填充

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? ?

"Create:2 Uncaught SyntaxError: Unexpected token < in JSON at position 2"

我輸入HTML是這樣的:

<input type="text" id="clientes" class="form-control col-md-10" /> 
+0

遠程服務可以返回HTML而不是JSON。另外,你的'data'不是有效的JSON。試試'data:JSON.stringify({nome:request.term})'。這兩個可能是相關的(壞數據 - > HTML錯誤響應) – Phil

+0

擴展@ Phil的評論,只有引號是JSON中的有效字符串分隔符,而不是撇號。 JSON可能看起來像Javascript,但事實並非如此。 – Ouroborus

+0

我希望你的請求正在被重定向,因爲你已經註銷,錯誤處理程序已經啓動,或者404,而且由於你實際上正在服務於一個HTML文檔,所以'<<。 –

回答

2

我的猜測是,由於你那些畸形的JSON data財產,你的服務器端的資源返回一個HTML錯誤,因此在意外<字符響應。

通過創建一個有效的JSON字符串解決您的數據......

data: JSON.stringify({nome: request.term}), 

這將產生像

{"nome":"whatever you typed"} 

的值是有效的,而不是

{'nome':'whatever you typed'} 

這是不是由於單引號引起的,可能更糟,這取決於request.term的值。

1

嘗試字符串化的響應數據,並再次對其進行分析,看一看:

(...) 
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

相關問題