Ich veröffentliche Daten zu einem MVC-Controller, und ich bin versucht, Staat als auch für die Parallelität zu halten. Ich poste gerade eine JSON-Anfrage zurück, wäre aber offen für praktikable Alternativen?
Ich bin schon ein Name/Wert-Sammlung mit dem folgenden Befehl Posting:
$.ajax({
url: g_appPath + "/Rounding.aspx/Round/" + $("#OfferId").val(),
type: 'POST',
dataType: 'html',
data: $.toJSON(data), // <-- data = name/value array
contentType: 'application/json; charset=utf-8',
beforeSend: doSubmitBeforeSend,
complete: doSubmitComplete,
success: doSubmitSuccess
});
Ich habe auch eine (verschlüsselte) Array von IDs und Zeitstempel, die ich zurück, damit der Server übergeben wollen entschlüsseln kann, Überprüfen Sie anschließend, ob die Daten noch frisch sind, bevor sie gespeichert werden.
Es ist sehr wichtig, dass das Datenobjekt getrennt ist und kein untergeordnetes Element des einen oder des anderen oder in einem Wrapper-Array ist (wegen reflektorischer Deserialisierung am Serverende). Es ist auch wichtig zu beachten, dass ich einreichen diese asynchron und nicht als eine Form tun wollen.
Meine Frage ist: Gibt es eine Möglichkeit, zurück 2 JSON-Objekte veröffentlichen können ‚application/json‘ als Inhaltstyp verwenden?
Meine andere Frage ist: Gibt es eine bessere/andere Art, wie ich dies tun könnte?
danke im voraus!
AKTUALISIEREN: Ich löste mein Problem, indem ich den contentType-Parameter auf den Standardwert änderte und stattdessen die stringifizierten AJAX-Daten als separate benannte Parameter in den Querystring schickte.
Wenn Sie content verwenden: ‚application/json; charset = utf-8 ', das schiebt die Daten in den Körper der Anfrage und nicht in die Querystring. Mein neues $ Schnipsel() Post sieht nun wie folgt aus:
$.ajax({
url: g_appPath + "/Rounding.aspx/Round/" + $("#OfferId").val(),
type: 'POST',
dataType: 'html',
data: "RoundingData=" + $.toJSON(data) + "&StateData=" + $.toJSON(stateData),
// --removed! contentType: 'application/json; charset=utf-8',
beforeSend: doSubmitBeforeSend,
complete: doSubmitComplete,
success: doSubmitSuccess
});
Diese Frage wirklich erhob sich wegen meiner Unerfahrenheit mit dieser Art von Datenoperation, und ich hoffe, dass jemand für diese in die Zukunft könnte über diese stolpern.
danke!
Dan
Vielen Dank für Ihr Feedback Jungs! Ich schätze die Bemühungen sehr, die Sie unternommen haben, um mir zu helfen, dies zu lösen. Eines meiner Ziele war es, die Daten in einem Wrapper-Array zu vermeiden, was meiner Meinung nach das Einzige ist, das Sie mit einem Inhaltstyp wie 'application/json; charset = utf-8 '. Ich habe eine Lösung dafür gefunden, die ich als Ergänzung zu meiner Frage veröffentlichen werde. – Evildonald
Nur zu Ihrer Information: 'data:" RoundingData = "+ $ .toJSON (Daten) +" & StateData = "+ $ .toJSON (stateData)' und '{RoundingData: $. ToJSON (Daten), StateData: $ .toJSON (stateData) 'werden von jQuery auf die gleiche Weise interpretiert. Nun, tatsächlich wird Ihre Abfrage-Zeichenfolge tatsächlich in das Objekt im großen Schema der Dinge für die tatsächliche XHR konvertiert werden. Wenn Sie einen GET-Aufruf ausführen und die Abfragezeichenfolge der tatsächlichen URL hinzufügen, können Sie dieses Problem vermeiden, aber ich sehe nicht, warum es wichtig wäre (ich bin sicher, dass Sie einen guten Grund haben). Und natürlich ist GET sowieso kein semantisch korrektes HTTP. /schimpfen. – KyleFarris