오늘, JQuery의 Ajax 메소드를 사용하여 요청을 보내는 경우, 백그라운드에서 ASHX 파일을 사용하면 AJAX 메소드에서 전달 된 매개 변수를받을 수 없다는 것을 알았습니다. 온라인 이유를 확인한 후 문제를 발견했습니다. $ .ajax 메소드에서 "contenttype : 'applicattype :'applicattype : 'applicattype :'application/json; charset = utf8 '"을 지정하여 ASHX 파일에서 요청을 처리 할 때 매개 변수가 서버로 전달되었습니다.
글을 쓰는 올바른 방법은 다음과 같습니다.
$ .ajax ({url : '/handler.ashx?operflag=test', 'post',/*ashx 파일을 요청할 때 contenttype를 제거해야하며 데이터 형식은 { "key", "value"}입니다. achx에서 reduct를 추가 할 수없는 경우, 데이터 형식은 { "key", "value"}입니다. charset = utf ', data : { "key": "xdp", "key": "Lonely Wolf"}, Cache : False, Datatype :'text ', success : function (data) {alert (data);}, error : function (xhr) {alert ( "나중에 오류가 다시 시도하십시오 :" + xhr.responestext);이러한 방식으로 ASHX 파일의 다음 코드를 사용하여 $ .Ajax 메소드가 전달되는 매개 변수를 얻을 수 있습니다. 코드는 다음과 같습니다.
문자열 key = context.request [ "키"]; 문자열 key = context.request [ "키"];
Ajax를 처리하기 위해 $ .post 방법을 사용 했으므로이 문제를 알지 못했습니다. 이번에는 프로젝트가 필요했기 때문에 $ .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"}), contenttype :'charset = uTf ', cshae : affe : chache : caspe :'charpe : 'charset :'charset : 'charset :'charset : 'charset :'charset : 'charset :'charset. '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"}), // contenttype :'charset/json; datep : 'json', success : function (data) {alert (data.key + "|" + data.key);}, error : function (xhr) {alert ( "오류가 발생했습니다. 나중에 다시 시도하십시오 :" + xhr.responsetext);});그러나 결과는 여전히 동일합니다. Context.Request [ "Key3"]는 여전히 매개 변수를 얻을 수 없습니다. 방법이 없습니다. 기존 방법을 얻을 수 없으므로 다른 방법을 찾으십시오. 바이두는 해결책을 찾았습니다. ASHX에서 다음 방법을 사용하여 얻을 수 있습니다. 먼저, 매개 변수를 얻기 위해 일반 방법을 작성하면 코드는 다음과 같습니다.
/// <summary> /// get parameters /// </summary> /// <param name = "context"> </param> /// <returns> </returns> private dictionary <string, object> getParameter (httpcontext context) {streamreader reader = new Streamreader (context.request.inputstream); // json stream); // strjson = { "key": "xdp-gaCl", "key": "White Tiger God Emperor"} strjson = httputility.urldecode (reader.readtoend ()); jss.deserialize <사전 <문자열, 개체 >> (strjson); 반환 dicparameter;}getParameter 메소드는 dicparameter 객체를 반환하고 Dicparameter는 아래 그림과 같이 $ .Ajax 메소드에서 ASHX로 제출 된 매개 변수를 저장합니다.
이러한 방식으로, 전달 된 매개 변수는 처리를 위해 dicparameter에서 꺼낼 수 있습니다. 전체 코드는 다음과 같습니다.
public void processRequest (httpcontext context) {context.response.contentType = "text/plain"; String Operag = Context.Request [ "Operflag"]; if (Operflag == "test") {string key = 컨텍스트 [ "key"]; String key = context.request [ "key"; strem "; + key; context.response.write (resstr);} else if (operflag == "test") {dictionary <string, object> dicparameter = getParameter (context); String key = dicparameter [ "key"]. tostring (); String key = dicparameter [ "key"]; tostring (); + "/",/"key/":/"" + key + "/"> ;context.response.write (esrestr);}}위는 편집기가 소개 한 $ .ajax () 메소드에 의해 얻은 ASHX 파일에서 보낸 데이터입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!