2010-07-28 2 views
2

Существует целая куча учебников, объясняющих, как это сделать, например here и here.jQuery Autocomplete не работает с данными Json

Выглядит очень легко, да? Тем не менее, мне все равно удалось потратить полдня на то, чтобы не работать.

Например: следующие работы абсолютно прекрасные

public ActionResult FindStuff(string q) 
{ 
    return Content("test"); 
} 

$('#MyTextBox').autocomplete("MyController/FindStuff", { 
    parse: function(data) { 
     alert('parsing'); 
    } 
}); 

Если изменить его к следующему, абсолютно ничего не происходит.

public JsonResult FindStuff(string q) 
{ 
    return Json(new { name = "test" }); 
} 

$('#MyTextBox').autocomplete("MyController/FindStuff", { 
    dataType: 'json', // I've also tried with this line commented out 
    parse: function(data) { 
     alert('parsing'); 
    } 
}); 

Так выглядит parse вызова никогда не быть пораженным, то есть я предполагаю, что нагрузка данных взрывает так или думает, что нет никаких данных. Есть идеи? Благодарю.

p.s. это плагин Jorn Zaefferer here.

ответ

3

Убедитесь, что вы возвращаете массив, и вы позволяете запросы GET (в случае, если ваш используете ASP.NET MVC 2.0):

public ActionResult FindStuff(string q) 
{ 
    return Json(new[] { new { name = "test" } }, JsonRequestBehavior.AllowGet); 
} 

А затем следуют примеры:

$('#MyTextBox').autocomplete("MyController/FindStuff", { 
    dataType: 'json', 
    parse: function (data) { 
     var rows = new Array(); 
     for (var i = 0; i < data.length; i++) { 
      rows[i] = { data: data[i], value: data[i].name }; 
     } 
     return rows; 
    }, 
    formatItem: function (row, i, n) { 
     return row.name; 
    } 
}); 

Работает красиво.

Примечание: FireBug помогает быстро диагностировать проблемы, так как он показывает вам, какие именно запросы AJAX отправляются и почему они преуспевают или терпят неудачу.

+0

damn JsonRequestСобытия !!! это не первый раз, когда я получил меня. – fearofawhackplanet

+0

Вот почему FireBug чрезвычайно полезен. Вы сразу получаете ошибку. –

Смежные вопросы