今日、jqueryのAjaxメソッドを使用してリクエストを送信していたとき、背景にASHXファイルを使用すると、AJAXメソッドで渡されたパラメーターを受信できないことがわかりました。オンラインで理由をチェックした後、問題を発見しました。 $ .AJAXメソッドで「contentType: 'application/json; charset = utf8'」を指定したことが判明しました。
それを書く正しい方法は次のとおりです。
$ .ajax({url: '/handler.ashx?operflag = test'、type:' post '、/*ashxファイルを要求する場合、データ形式は{"key"、 "value"}を削除する必要があります。 charset = utf '、data:{"key": "xdp"、 "key": "lonely wolf"}、cache:false、datatype:' text '、success:function(alert(data);}、erser:function(xhr){alert( "alsed as and reas reas reas dater:" + xhr.responsetext);このようにして、ASHXファイルの次のコードを使用して、$ .AJAXメソッドで渡されるパラメーターを取得できます。コードは次のとおりです。
文字列key = context.request ["key"];文字列key = context.request ["key"];
以前は$ .POSTメソッドを使用してAJAXを扱っていたので、この問題に気付きませんでした。今回は、プロジェクトで要求されていたため、$ .AJAXを使用しました。上記の問題に遭遇するとは思っていませんでした。幸いなことに、私は問題を発見し、時間内に問題を解決しました。
さらに、「Ajaxを使用してASHXにデータを送信した後、JSON.Stringifyを使用してパラメーターをフォーマットした後、コードは次のとおりです。
$ .ajax({url: '/handler.ashx?operflag=test'、type:' post '、// json.stringify形式パラメーターデータ:json.stringify({"key": "xdp-gacl"、 "key": "white tiger god emperor"}) 'json'、success:function(data){alert(data.key + "|" + data.key);}、error:function(xhr){alert( "エラーが発生しました。" + xhr.responsetext);}});その結果、ASHXのContext.Request ["key3"]を使用する通常の方法は、下の図に示すようにパラメーターを取得できません。
私は長い間落ち込んでいたので、なぜこれが起こったのかを理解できませんでした。最初は、contentTypeのコードが原因だと思いました: 'Application/JSON; charset = utf8 'なので、コードにコメントしました。
$ .ajax({url: '/handler.ashx?operflag=test'、type:' post '、// json.stringify形式パラメーターデータ:json.stringify({"key": "xdp-gacl"、 "key": "white tiger god emperor"})、cantertype:'アプリケーション/json; 'json'、success:function(data){alert(data.key + "|" + data.key);}、error:function(xhr){alert( "エラーが発生しました。" + xhr.responsetext);}});しかし、結果はまだ同じです。 Context.Request ["key3"]を使用して、パラメーターを取得できません。方法はありません。従来の方法は取得できないため、別の方法を探します。 Baiduは解決策を見つけました。 ASHXで次の方法を使用して入手できます。まず、パラメーターを取得するための一般的な方法を記述します。コードは次のとおりです。
/// <summary> ///パラメーターを取得/// strjson = {"key": "xdp-gacl"、 "key": "white tiger god emper"} string strjson = httputility.urldecode(reader.readtoend(); jss.deserialize <dictionary <string、object >>(strjson); return dicparameter;}getParameterメソッドはDICPARAMETERオブジェクトを返し、DICPARAMETERは、下の図に示すように、$ .AJAXメソッドからASHXに提出されたパラメーターを保存します。
このようにして、通過したパラメーターは、処理のためにDICPARAMETERから取り出すことができます。完全なコードは次のとおりです。
public void processRequest(httpcontext context){context.response.contenttype = "text/plain"; string operag = context.request ["operflag ==" test "){string key = context.request [" key "]; string key = context.request.request.request.request ["]; + key; context.response.write(resstr);} else if(operflag == "test"){dictionary <string、object> dicparameter = getparameter(context); string key = dicparameter ["key"]。 "/"、/"key/":/"" + key + "/" }";context.response.write(resstr);}}}上記は、編集者が導入した$ .ajax()メソッドによって取得されたASHXファイルによって送信されたデータです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!