jQuery UI Autocomplete JSON gives error: Uncaught TypeError: Cannot use 'in' operator to search for '62' in jQuery UI Autocomplete JSON gives error: Uncaught TypeError: Cannot use 'in' operator to search for '62' in ajax ajax

jQuery UI Autocomplete JSON gives error: Uncaught TypeError: Cannot use 'in' operator to search for '62' in


It was a long road, but after many hours of experimenting I came up with this code:

$("#searchInput").autocomplete({    source: function (request, response) {        $.ajax({            url: '@Url.Action("GetKeywords", "Home")',            dataType: "json",            data: {                SearchTerm: request.term            },            success: function (data) {                var parsed = JSON.parse(data);                var newArray = new Array(parsed.length);                var i = 0;                parsed.forEach(function (entry) {                    var newObject = {                        label: entry.kwrdKeyWord                    };                    newArray[i] = newObject;                    i++;                });                response(newArray);            },            error: function (message) {                response([]);            }        });    },    minLength: 2});

This appears to work fine. The truth is my keywords are unique, so I can live without the ID anyway.


a little help that can be useful:

if you're using json, it might be that the "json object" isn't parsed, or you've overwritten the variable with others tings (like what I did stupidly recently).

for the first problem, be sure that your server know "application/json" MIME type, else use header (for PHP)

I mean, in PHP, use this before all:

header("Content-type: application/json");


here how you use the function for the source property

source:function(request,response) {    var url = "your url";    var postdata = "your data"; // normally you might use request.term to get the current user input    $.ajax({url:url,data:postdata,success:function(responsedata){        response($.parseJSON(responsedata))    }});}

The response function accepts array of JSON objects