Сегодня, когда я использовал метод jQuery Ajax для отправки запроса, я обнаружил, что использование файла ASHX в фоновом режиме не может получить параметры, передаваемые в методе AJAX. После проверки причины онлайн я нашел проблему. Оказалось, что я указал «ContentType: 'Application/json; charset = utf8'» в методе $ .ajax, что вызвало параметры, передаваемые серверу при обработке запроса в файле ASHX.
Правильный способ написать это следующим образом:
$ .ajax ({url: '/handler.ashx?operflag=test' -type:' post ',/*При запросе файла ashx вы должны удалить ContentType, а формат данных - {"Key", "value"}; не помните, чтобы добавлять двойные цитаты вне брекеты, так как эти данные не могут быть получены на странице ASHX *// ////messpe ////messpe ////messpe ////messpe ////messpe ////messpe; charset = utf ', data: {"key": "xdp", "key": "lonely wolf"}, cache: false, dataType:' text ', success: function (data) {alert (data);}, ошибка: function (xhr) {alert ("ошибка, пожалуйста, попробуйте позже:" + xhr.ressetextextext);Таким образом, вы можете использовать следующий код в файле ASHX, чтобы получить параметры, передаваемые методом $ .ajax, код выглядит следующим образом:
string key = context.request ["key"]; string key = context.request ["key"];
Раньше я использовал метод $ .post для борьбы с Ajax, поэтому я не заметил эту проблему. На этот раз, поскольку это требовалось для проекта, я использовал $ .ajax. Я не ожидал столкнуться с вышеуказанной проблемой. К счастью, я узнал проблему и вовремя решил проблему.
Кроме того, в последнее время я столкнулся с странной проблемой: «После отправки данных в ASHX с использованием AJAX и после форматирования параметров с json.stringify, код выглядит следующим образом:
$ .ajax ({url: '/handler.ashx?operflag=test', type:' post ', // json.stringify format paramater data: json.stringify ({"key": "xdp-gacl", "key": "White Tiger God Emperor"}, ContentType:' Application/json; 'json', success: function (data) {alert (data.key + "|" + data.key);}, ошибка: function (xhr) {alert ("произошла ошибка, пожалуйста, попробуйте еще раз:" + xhr.responseText);}});В результате нормальный метод использования context.request ["key3"] в ASHX не может получить параметры, как показано на рисунке ниже:
Я был в депрессии в течение долгого времени и не мог понять, почему это произошло. Сначала я думал, что это вызвано кодом ContentType: 'Application/JSON; charset = utf8 ', поэтому я прокомментировал код:
$ .ajax ({url: '/handler.ashx?operflag=test'-type:' post ', // json.stringify format parameter Данные: json.stringify ({"key": "xdp-gacl", "key": "White tiger od emperor"}), // contenttype:' applicate/json; 'json', success: function (data) {alert (data.key + "|" + data.key);}, ошибка: function (xhr) {alert ("произошла ошибка, пожалуйста, попробуйте еще раз:" + xhr.responseText);}});Но результат остается таким же. Использование Context.Request ["key3"] все еще не может получить параметры. Там нет пути. Поскольку обычный метод не может быть получен, затем ищите другой метод. Байду нашел решение. Вы можете получить его, используя следующий метод в ASHX. Во -первых, напишите общий метод для получения параметров, код выглядит следующим образом:
//// <summary> /// Получить параметры /// </summary> /// <param name = "context"> </param> /// <return> </return> Private Doadary <String, Object> getParameter (httpcontext context) {streamreder reader = new Streatreader (context.request.inputStream); strjson = {"key": "xdp-gacl", "key": "White Tiger God Emperor"} String strjson = httputility.urldecode (reader.readtoend ()); javascriptserializer jss = new Javascriptserializ JSS.Deserialize <Dictionary <String, Object >> (strjson); return dicparameter;}Метод GetParameter возвращает объект дикпараметра, а дикпараметт сохраняет параметры, представленные из метода $ .ajax в ASHX, как показано на рисунке ниже:
Таким образом, пройденные параметры могут быть выведены из дикпараметра для обработки. Полный код заключается в следующем:
public void processRequest (контекст httpcontext) {context.response.contenttype = "text/plain"; string operag = context.request ["operflag"]; if (operflag == "test") {string key = context.request ["key"]; string key = context.request ["key"]; string resstr resstr + "|" + key; context.response.write (resstr);} else if (operflag == "test") {Dictionary <String, Object> dicParameter = getParameter (context); String Key = dicParameter ["key"]. ToString (); String Key = diCparameter ["key"]. "/",/"key/":/"" + key + "/"> context.response.write(sresstr);}}Выше приведены данные, отправляемые файлом ASHX, полученным методом $ .ajax (), введенным редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!