Получил простую коробку автозаполнения (jquery ui), которая получает свой источник от веб-службы. Код выглядит примерно так:
var autocompleteOptions = {
source = getDataFromService,
minLength: 3
};
var getDataFromService = function(request, response) {
var ajaxOptions = {
url: "http://myservice:1234/somedata/",
dataType: "jsonp",
data: "someVariable = " + request.term,
success: function(data) { alert("data"); },
error: function(xhr, description, error) { alert("failed"); }
};
$.ajax(ajaxOptions);
}
$(someSelector).autocomplete(autocompleteOptions);
Глядя в fiddler и даже в панель Firebug Firefox, я вижу, что JSON возвращается правильно, а ответ сервера равен 200. Я даже проверил созданный фрагмент сценария jsonp, который также содержит правильный JSON. Однако он всегда срабатывает в функции ошибки, а не в функции успеха.
Я также пытался использовать complete и получать данные из xhr вручную, однако responseText и responseXml оба не определены. Содержащаяся ошибка говорит об ошибке синтаксического анализа, но все это выглядит синтаксически правильно, как у json, так как на панели firebug и fiddler все отображается нормально.
HTTP/1.1 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: 28 Jun 2011 11:17:04 GMT
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 29
Connection: Close
[{"id":"1", "somevar":"hello"}]