Als ich heute die AJAX -Methode von JQuery verwendet habe, um eine Anfrage zu senden, stellte ich fest, dass die Verwendung der AshX -Datei im Hintergrund die in der AJAX -Methode übergebenen Parameter nicht empfangen konnte. Nachdem ich den Grund online überprüft hatte, fand ich das Problem. Es stellte sich heraus, dass ich "contentType: 'application/json; charSet = utf8'" in der $ .ajax -Methode angegeben habe, die die an den Server übergebenen Parameter bei der Verarbeitung der Anforderung in der AshX -Datei verursachte.
Die richtige Art zu schreiben ist wie folgt:
$ .ajax ({url: '/handler.ashx?operflag=Test''type:' post ',/*Bei Anfordern der AshX -Datei müssen Sie den ContentType entfernen, und das Datenformat ist {"Schlüssel", "Wert"}; charset = utf ', data: {"key": "xdp", "key": "Lonely Wolf"}, Cache: false, DataType:' text ', Erfolg: Funktion (Daten) {alert (Daten);}, Fehler: function (xhr) {alert ("und ein Fehler, bitte versuchenAuf diese Weise können Sie den folgenden Code in der ASHX -Datei verwenden, um die von der $ .AJAX -Methode übergebenen Parameter zu erhalten. Der Code lautet wie folgt:
String key = context.request ["key"]; String key = context.request ["key"];
Früher habe ich die $ .post -Methode verwendet, um mit AJAX umzugehen, daher habe ich dieses Problem nicht bemerkt. Dieses Mal habe ich, da es durch das Projekt verlangt wurde, $ .Ajax. Ich hatte nicht erwartet, auf das obige Problem zu stoßen. Glücklicherweise fand ich das Problem heraus und löste das Problem rechtzeitig.
Darüber hinaus habe ich in letzter Zeit ein seltsames Problem gestoßen: "Nachdem ich Daten mit AJAX an ASHX übermittelt habe und die Parameter mit JSON.Stringify formatiert hatte. Der Code ist wie folgt:
$ .ajax ({url: '/Handler.ashx?operflag=Test'.type:' post ', // json.Stringify-Formatparameterdaten: json.Stringify ({"Schlüssel": "xdp-gacl", "Schlüssel": "White Tiger God Emperor"}), Contentype, DOTHTEL: 'JSON', Erfolg: Funktion (Daten) {alert (Data.Key + "|" + data.Key);}, Fehler: Funktion (xhr) {alert ("Ein Fehler ist aufgetreten, bitte versuchen Sie es später erneut:" + xhr.responsetext);}});Infolgedessen kann die normale Methode zur Verwendung von Context.request ["Key3"] in ASHX keine Parameter erhalten, wie in der folgenden Abbildung gezeigt:
Ich war lange deprimiert und konnte nicht herausfinden, warum dies geschah. Zuerst dachte ich, dass dies durch den Code von ContentType verursacht wurde: 'Application/JSON; charset = utf8 ', also habe ich den Code kommentiert:
$ .ajax ({url: '/handler.ashx?operflag=Test'.type:' post ', // json.Stringify-Formatparameterdaten: json.Stringify ({"Schlüssel": "xdp-gacl", "Schlüssel": "White Tiger God Emperor"}), // ContentType: Json: Jons,: // ContentType: Json: Jon; 'JSON', Erfolg: Funktion (Daten) {alert (Data.Key + "|" + data.Key);}, Fehler: Funktion (xhr) {alert ("Ein Fehler ist aufgetreten, bitte versuchen Sie es später erneut:" + xhr.responsetext);}});Aber das Ergebnis ist immer noch das gleiche. Verwenden von context.request ["key3"] kann die Parameter immer noch nicht abrufen. Es gibt keinen Weg. Da die herkömmliche Methode nicht erhalten werden kann, suchen Sie nach einer anderen Methode. Baidu fand eine Lösung. Sie können es mit der folgenden Methode in AshX erhalten. Schreiben Sie zunächst eine allgemeine Methode, um die Parameter zu erhalten. Der Code lautet wie folgt:
/// <summary> /// Parameter abrufen /// </summary> /// <param name = "context"> </param> // <returns> </returns> private dictionary <string, Object> getParameter (httpcontext context) {StreamReader Reader = NewReader (contexte.Rext.Rext.Rexe.Request.REXT.REXT.REXT.REXT. strjson = {"key": "xdp-gacl", "key": "White Tiger God Emperor"} String strjson = httputility.urldecode (reader.readtoend ()); JSS.Deserialize <Dictionary <String, Objekt >> (strjson); return dicparameter;}Die GetParameter -Methode gibt ein Dicparameter -Objekt zurück, und der Dicparameter speichert die von der $ .AJAX -Methode eingereichten Parameter an ASHX, wie in der folgenden Abbildung gezeigt:
Auf diese Weise können die übergebenen Parameter zur Verarbeitung aus dem Dicparameter herausgenommen werden. Der vollständige Code lautet wie folgt:
public void processRequest (httpcontext context) {context.response.contentType = "text/plain"; String operAg = context.request ["OperFlag"]; if (OperFlag == "test") {String key = context.request ["Key"]; + key; context.response.write (ressstr);} else if (operFlag == "test") {Dictionary <String, Objekt> dicparameter = getParameter (context); String key = dicparameter ["key"]. toString (); String key = dicparameter ["key". + "/",/"key/":/"" + taste + "/";context.Response.write(ESPR);}}Die oben genannten Daten sind die von der vom Editor eingeführten Methode $ .ajax () eingeführten ASHX -Datei gesendeten Datei. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!