ajax 설정 contentType = json 배경 에서 인 자 를 가 져 올 수 없습니다.

14711 단어 jQuery
ajax 의 contentType 은 여러 가지 유형 이 있 습 니 다. 기본 값 은 contentType = application / x - ww - form - urlencoded 입 니 다.charset=utf-8;,contentType = application / json 을 설정 하면;charset=utf-8;그러면 배경 에서 context. Request. Form [] 을 통 해 인 자 를 얻 을 수 없 는 상황 에서 발생 합 니 다. 다음은 post, get 두 가지 방식 으로 정리 하 겠 습 니 다.
post 전송 값
프론트 코드, data 는 json 문자열 입 니 다:
function PostSendParams() {
    $.ajax({
        type: "post",
        url: "Handler1.ashx",
        contentType: "application/json;charset=utf-8;",
        data: "{ \"contentType\": \"application/json\", \"param2\": \"18\" }",
        dataType: "json",
        success:function(data) {
            alert("data=" + data);
        },
        error:function(error) {
            alert("error=" + error);
        }
    });
}

배경 값:
public void ProcessRequest(HttpContext context)
{
    try
    {
        #region Form  (  )
        //string contentType = context.Request.Form["contentType"].ToString();
        //string param2 = context.Request.Form["param2"].ToString();
        #endregion

        #region InputStream  (  )
        Stream stream = context.Request.InputStream;
        byte[] bytes = new byte[stream.Length];
        stream.Read(bytes, 0, bytes.Length);
        string parameters = Encoding.Default.GetString(bytes);
        JObject jObject = (JObject)JsonConvert.DeserializeObject(parameters);
        string contentType = jObject["contentType"].ToString();
        string param2 = jObject["param2"].ToString(); 
        #endregion                
    }
    catch (Exception ex)
    {
        context.Response.Write("error");
    }
}

프론트 코드, data 는 json 대상:
function PostSendParams() {
    $.ajax({
        type: "post",
        url: "Handler1.ashx",
        contentType: "application/json;charset=utf-8;",
        data: { contentType: "application/json", param2: 18 },
        dataType: "json",
        success:function(data) {
            alert("data=" + data);
        },
        error:function(error) {
            alert("error=" + error);
        }
    });
}

배경 값:
public void ProcessRequest(HttpContext context)
{
    try
    {
        #region Form  (  )
        //string contentType = context.Request.Form["contentType"].ToString();
        //string param2 = context.Request.Form["param2"].ToString();
        #endregion

        #region InputStream  (  )
        Stream stream = context.Request.InputStream;
        byte[] bytes = new byte[stream.Length];
        stream.Read(bytes, 0, bytes.Length);
        string parameters = Encoding.Default.GetString(bytes);
        JObject jObject = (JObject)JsonConvert.DeserializeObject(parameters);
        string contentType = jObject["contentType"].ToString();
        string param2 = jObject["param2"].ToString(); 
        #endregion                
    }
    catch (Exception ex)
    {
        context.Response.Write("error");
    }
}

get 전송 값
프론트 코드, data 는 json 문자열 입 니 다:
function GetSendParams() {
    $.ajax({
        type: "get",
        url: "Handler1.ashx",
        contentType: "application/json;charset=utf-8;",
        data: "{ \"contentType\": \"application/json\", \"param2\": \"18\" }",        
        dataType: "json",
        success: function (data) {
            alert("data=" + data);
        },
        error: function (error) {
            alert("error=" + error);
        }
    });
}

배경 값:
public void ProcessRequest(HttpContext context)
{
    try
    {
        #region QueryString  (  )
        //string contentType = context.Request.QueryString["contentType"].ToString();
        //string param2 = context.Request.QueryString["param2"].ToString();
        #endregion

        #region InputStream  (  )
        Stream stream = context.Request.InputStream;
        byte[] bytes = new byte[stream.Length];
        stream.Read(bytes, 0, bytes.Length);
        string parameters = Encoding.Default.GetString(bytes);
        JObject jObject = (JObject)JsonConvert.DeserializeObject(parameters);
        string contentType = jObject["contentType"].ToString();
        string param2 = jObject["param2"].ToString();
        #endregion
    }
    catch (Exception ex)
    {
        context.Response.Write("error");
    }
}

프론트 코드, data 는 json 대상:
function GetSendParams() {
    $.ajax({
        type: "get",
        url: "Handler1.ashx",
        contentType: "application/json;charset=utf-8;",
        data: { contentType: "application/json", param2: 18 },
        dataType: "json",
        success: function (data) {
            alert("data=" + data);
        },
        error: function (error) {
            alert("error=" + error);
        }
    });
}

배경 값:
public void ProcessRequest(HttpContext context)
{
    try
    {
        #region QueryString  (  )
        string contentType = context.Request.QueryString["contentType"].ToString();
        string param2 = context.Request.QueryString["param2"].ToString();
        #endregion

        #region InputStream  (  )
        //Stream stream = context.Request.InputStream;
        //byte[] bytes = new byte[stream.Length];
        //stream.Read(bytes, 0, bytes.Length);
        //string parameters = Encoding.Default.GetString(bytes);
        //JObject jObject = (JObject)JsonConvert.DeserializeObject(parameters);
        //string contentType = jObject["contentType"].ToString();
        //string param2 = jObject["param2"].ToString();
        #endregion
    }
    catch (Exception ex)
    {
        context.Response.Write("error");
    }
}

총결산
contentType = application / json;charset=utf-8;때, post 전송 값 은 data 가 json 문자열 백 엔 드 에서 InputStream 으로 분석 해야만 파 라미 터 를 얻 을 수 있 습 니 다.contentType = application / json;charset=utf-8;get 전송 값 은 data 가 json 대상 배경 에서 Query String 으로 분석 해 야 인 자 를 얻 을 수 있 습 니 다.

좋은 웹페이지 즐겨찾기