2011-06-28 9 views
5

Otrzymujesz proste pole autouzupełniania (jquery ui), które pochodzi z usługi internetowej. Kod jest coś takiego jak poniżej:Żądanie Jquery JSONP otrzymuje odpowiedź 200 z danymi, ale błąd flagi

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); 

Patrząc w Fiddler i nawet w panelu firebug Firefox, widzę, że JSON jest prawidłowo zwrócony, a odpowiedź serwera jest 200. Mam nawet sprawdził utworzony jsonp fragment kodu, który zawiera również poprawny JSON. Jednak zawsze trafia w funkcję błędu, a nie sukces.

Próbowałem również użyć pełnego i pobieranie danych z xhr ręcznie, jednak responseText i responseXml są niezdefiniowane. Zawarty błąd mówi o błędzie parsowania, ale wydaje się, że wszystko jest poprawne pod względem syntaktycznym, ponieważ zarówno panel firebug, jak i fiddler wyświetlają go poprawnie.

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"}] 
+1

Można zaksięgować JSON w pytaniu? Jeśli pojawia się "błąd analizy", musi istnieć powód ... – Pointy

+0

Dodaje surowe dane wyjściowe do mojego oryginalnego postu, jeśli pomaga – somemvcperson

+0

Co widzisz w oknie alertu po zakończeniu wywołania AJAX? A może nie alarmuje? – MoarCodePlz

Odpowiedz

5

JSON To nie jest poprawne,

[{"id":"1", somevar:"hello"}]

musi być

[{"id":"1", "somevar":"hello"}]

JSON wymaga cudzysłowia.

http://jsfiddle.net/robert/Y6ypV/

Wartość może być ciągiem znaków w cudzysłowach lub numer, albo prawdziwe lub fałszywe lub null, lub obiektu lub tablicą. Struktury te można zagnieżdżać.

trwać od: http://www.json.org/

+0

Przepraszam literówkę, właśnie skopiowałem pisanie z innego komputera poprawnie zawiera notowania wokół danych na drugim komputerze. Zaktualizuje mój wpis. – somemvcperson

+0

http://jsonlint.com/ jest świetnym walidatorem json - używałem go dzisiaj :-) –

+0

Nie wiedziałem, że był jsonlint, używam jslint w moim budowaniu potoku ... pójdę sprawdzić json tam teraz. .. * EDYCJA * Valid json – somemvcperson