Asp.Net中ajax+ashx使用詳解

changuncle發表於2017-11-26

ajax請求程式碼如下:

function PostSendParams() {
    $.ajax({
        type: "post",
        url: "PostHandler1.ashx",
        contentType: "application/x-www-form-urlencoded;charset=utf-8;",
        //data: { action: "getString", param1: 123 },
        //data: "{ \"action\": \"getString\", \"param1\": \"123\" }",
        //data: "{ action: 'getString', param1: 123 }",                
        data: "action=getString&param1=123",
        dataType: "json",
        success: function (data) {
            alert("data=" + data);
        },
        error: function (error) {
            alert("error=" + error);
        }
    });
}

一、post請求+contentType=”application/json;charset=utf-8;”

1、data:{action:”getString”,param1:123}
無法通過context.Request.Form[]獲取引數值
通過context.Request.InputStream可以將引數轉化為”action=getString&param1=123”
2、data:”{\“action\”:\”getString\”,\”param1\”:\”123\”}”
無法通過context.Request.Form[]獲取引數值
通過context.Request.InputStream可以將引數轉化為”{\“action\”:\”getString\”,\”param1\”:\”123\”}”
3、data:”{action:’getString’,num:123}”
無法通過context.Request.Form[]獲取引數值
通過context.Request.InputStream可以將引數轉化為”{action:’getString’,num:123}”
4、data:”action=getString&num=123”
無法通過context.Request.Form[]獲取引數值
通過context.Request.InputStream可以將引數轉化為”action=getString&num=123”

二、post請求+ contentType=”application/x-www-form-urlencoded;charset=utf-8;”

1、data:{action:”getString”,param1:123}
可以通過context.Request.Form[]獲取引數值
2、data:”{\“action\”:\”getString\”,\”param1\”:\”123\”}”
無法通過context.Request.Form[]獲取引數值
通過context.Request.InputStream可以將引數轉化為”{\“action\”:\”getString\”,\”param1\”:\”123\”}”
3、data:”{action:’getString’,param1:123}”
無法通過context.Request.Form[]獲取引數值
通過context.Request.InputStream可以將引數轉化為”{action:’getString’,param1:123}”
4、data:”action=getString&param1=123”
可以通過context.Request.Form[]獲取引數值

三、get請求+ contentType=”application/json;charset=utf-8;”

1、data:{action:”getString”,param1:123}
可以通過context.Request.QueryString[]獲取引數值
2、data:”{\“action\”:\”getString\”,\”param1\”:\”123\”}”
無法通過context.Request.QueryString[]獲取引數值
通過context.Request.InputStream可以將引數轉化為””
3、data:”{action:’getString’,param1:123}”
無法通過context.Request.QueryString[]獲取引數值
通過context.Request.InputStream可以將引數轉化為””
4、data:”action=getString&param1=123”
可以通過context.Request.QueryString[]獲取引數值

四、get請求+ contentType=”application/x-www-form-urlencoded;charset=utf-8;”

1、data:{action:”getString”,param1:123}
可以通過context.Request.QueryString[]獲取引數值
2、data:”{\“action\”:\”getString\”,\”param1\”:\”123\”}”
無法通過context.Request.QueryString[]獲取引數值
通過context.Request.InputStream可以將引數轉化為””
3、data:”{action:’getString’,param1:123}”
無法通過context.Request.QueryString[]獲取引數值
通過context.Request.InputStream可以將引數轉化為””
4、data:”action=getString&param1=123”
可以通過context.Request.QueryString[]獲取引數值

使用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);
action = jObject["action"].ToString();
param1 = jObject["param1"].ToString();

相關文章