2008-09-17 16 views
10

Ich habe festgestellt, dass mein JSON, der vom Server kommt, gültig ist (den Ajax manuell aufrufen), aber ich würde gerne JQuery verwenden. Ich habe auch festgestellt, dass die "Post" -URL, die an den Server gesendet wird, korrekt ist und Firebug verwendet. Der Fehlerrückruf wird jedoch immer noch ausgelöst (parsererror). Ich habe auch versucht, Datentyp: Text.JSON kann nicht von JQuery empfangen werden. Ajax call

Gibt es andere Optionen, die ich hinzufügen sollte?

$(function() { 
    $("#submit").bind("click", function() { 
     $.ajax({ 
      type: "post", 
      url: "http://myServer/cgi-bin/broker" , 
      datatype: "json", 
      data: {'start' : start,'end' : end}, 
      error: function(request,error){ 
       alert(error); 
      }, 
      success: function(request) { 
       alert(request.length); 
      } 
     }); // End ajax 
    }); // End bind 
}); // End eventlistener 

Antwort

19

Hier sind ein paar Vorschläge, die ich versuchen würde:

1) die ‚Datentyp‘ Option, die Sie festgelegt haben sollte ‚datatype‘ (Groß- und ich glaube)

2) versuchen, sein mit die ‚content‘ Option als so:

contentType: "application/json; charset=utf-8" 

bin ich nicht sicher, wie viel, dass es helfen wird, wie in der Anforderung an die Post-uRL verwendet wird, nicht in der Antwort. Lesen Sie diesen Artikel für weitere Informationen: http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax (Es ist für asp.net geschrieben, aber anwendbar sein)

3) Dreibettzimmer mit dem Ausgang der Post-URL überprüfen und die Ausgabe durch ein JSON-Validator läuft nur absolut sicher sein, es ist gültig und kann in ein JSON-Objekt geparst werden. http://www.jsonlint.com

Hoffe, dass einige davon hilft!

+0

Vielen Dank für die sich die Zeit zu beantworten. es war die dataType-Option, die ich als Datentyp hatte –

+7

Nur eine Anmerkung, die Einstellung von dataType auf "json" setzt automatisch den contentType auf "application/json". – bhollis

+0

@ BHR +1 korrekt gemäß den Dokumenten. Aber vielleicht nützlich zu beachten: Ich arbeite mit jquery 1.6.4 atm und habe festgestellt, dass ich explizit festlegen muss contentType: "application/json; charset = utf-8" – zack

0

Der Datenparameter ist falsch. Hier ist ein Beispiel, das funktioniert:

Daten: {index: ddl.selectedIndex},

Diese Konstrukte ein Objekt mit Eigenschaft namens Index mit dem Wert ddl.selectedIndex.

Sie müssen die Zitate aus der Datenparameterzeile

Viel Glück A

+0

-1, es ist vollkommen gültige Syntax zu haben Zeichenfolge als Eigenschaftsname In einigen Situationen ist es ein Muss, wenn Sie beispielsweise einen Eigenschaftsnamen haben, der in JavaScript kein gültiger Bezeichner ist, und wenn Sie angeben, dass Sie ihm einen Wert zuweisen können. Ein übliches Beispiel ist "class", das in Anführungszeichen gesetzt werden muss, da es ein reserviertes Wort ist. In der JSON-Syntax ist es sogar erforderlich, alle Eigenschaftsnamen in doppelte Anführungszeichen zu schreiben. – DarthJDG

1

Warum myResult statt request entfernen?

success: function(request) { 
       alert(myResult.length); 
      } 
+0

Ich bin mir ziemlich sicher, dass ich in meinem vollständigen Code die Anfrage in myResult manipuliere .... aber ich habe sie geändert, so dass es klarer ist ... das Problem war, dass dataType als 'Datentyp' geschrieben wurde. Danke für den Kommentar –

Verwandte Themen