2013-07-26 14 views
29

Proszę o pomoc. W moim ajax połączeń uzyskiwanie błędu Nieprawidłowy JSON prymitywne, co niewłaściwy z tym następujący ajax rozmowyNieprawidłowy prymitywny JSON ERROR

$.ajax({ 
       url: "/Precedent/ShowPartyContents", type: "POST", 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'html', 
       data:{'partyId':party,'PartySelCombo':valueFrom,'DocumentId':DocId}, 
       sucess:function(result){ 
        alert("String"+ result); 
        //jq("#PartyTagContentArea-"+ pass cheyyenda id).html(data).fadeIn(); 
       }, 
       error : function(ts){ 
        alert("error :(" + ts.responseText); 


       } 

      }); 

Dzięki

+0

Na którym linia Czy masz ten błąd? –

+3

Masz również literówkę. 'success', a nie' sucess'. –

+0

Mam ten błąd z funkcji błędu ajax, także dzięki za wskazanie mi tego błędu pisowni. –

Odpowiedz

59

Jesteś obiecując typ zawartości application/json ale wysyłasz zwykły JS obiekt, który dostaje odcinkach jako percentyla zakodowany-string przez jQuery. Ta serializacja może być daleka od prawidłowego JSON.

Zmiana:

data: {'partyId':party,'PartySelCombo':valueFrom,'DocumentId':DocId}, 

do:

data: JSON.stringify({'partyId':party,'PartySelCombo':valueFrom,'DocumentId':DocId}), 
+1

Thrustmaster rozwiązałeś mój problem .... Dzięki –

+1

uratowałeś mój dzień .. dzięki. – teapeng

+0

To przypomniało mi, że dla odpowiedzi JSon powinien to być contenttype aplikacji/json, ale dla początkowego przesłania za pomocą JavaScript musiał to być "application/x-www-form-urlencoded; charset = UTF-8" –

1

stoją problemu ze względu na tych liniach:

contentType: 'application/json; charset=utf-8', 
dataType: 'html', 

najpierw mówisz do wniosku, że wynikiem zwracanym będzie typ JSON, aw drugiej linii mówimy, że typ danych będzie HTML. W jaki sposób można zwrócić dane JSON?

Aby powrócić i użyć danych json, należy podać wartość dataType:'json'. Użyj tego:

contentType: 'application/json; charset=utf-8', 
dataType: 'json', 

Uwaga: masz błędnie funkcję sukces więc prawdą, że również.

+1

'contentType' odnosi się tylko do danych jQuery * wysyła *. 'dataType' dotyczy tylko danych jQuery * odbiera *. Prawidłowe jest, że 'contentType: 'application/json; charset = utf-8'' musi zostać usunięty (ponieważ przy innych domyślnych ustawieniach, jQuery utworzy - zakoduje dane, które nie będą jsonem), ale 'dataType' musi pozostać' 'html'' jeśli to jest rodzaj odpowiedzi oczekiwanej od serwera. – GSerg

3

Spróbuj z, usunąć "'" z danymi

data:{partyId:party,PartySelCombo:valueFrom,DocumentId:DocId} 

Użyj pojedynczego cudzysłowu w celu przypisania wartości jak

Nieprawidłowy:

$.ajax({ 
    type: 'POST', 
    contentType: 'application/json', 
    dataType: 'json', 
    url: 'WebService.asmx/Hello', 
    data: { FirstName: "Dave", LastName: "Ward" } 
}); 

prawej:

$.ajax({ 
    type: 'POST', 
    contentType: 'application/json', 
    dataType: 'json', 
    url: 'WebService.asmx/Hello', 
    data: '{ FirstName: "Dave", LastName: "Ward" }' 
}); 

proszę wykonać poniższe łącza dla wyjaśnienia

Invalid Json Premitive Possible Reason

Powiązane problemy