C# POST 三个参数(a,b,c)a是json格式,
这个我可以搞定,用json检测是能正常显示的b=3000;c=abcdefg假如url='192.168.1.100:9090/apply'这个post要怎么写呢,搞了好几天都报400错误
这个我可以搞定,用json检测是能正常显示的b=3000;c=abcdefg假如url='192.168.1.100:9090/apply'这个post要怎么写呢,搞了好几天都报400错误
b是数字
c是字符串后端接收对应参数就是
public void Method(string,int,string)
{}
这个,我一般是直接写成对象:
var data = {}
data["a"] = a
data["b"] = b
data["c"] = c
其中,a是Json完全无所谓,
就算发上去是application/json的类型,那段a数据也不会有影响.
如果a={"xx":"xxdata"}
因为到时候的代码会是{"a":"{\"xx\":\"xxdata\"}","b":3000,"c":"abcdefg"}
a的值,会同样是字符串,而不是json
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<title>jQuery Ajax</title>
<script src="Scripts/jquery-3.4.1.min.js"></script>
</head>
<body>
<input type="button" value="传值" onclick="postData()" />
<script>
function postData() {
$.ajax({
url: 'Handlers/TestHandler.ashx',
type: 'post',
dataType: 'json',
data: {
a: '张三',
b: '3000',
c: 'abcdefg'
},
success: function (data) {
alert(data.a + ',' + data.b + ',' + data.c);
}
})
}
</script>
</body>
</html>后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;namespace WebApplication2.Handlers
{
/// <summary>
/// TestHandler 的摘要说明
/// </summary>
public class TestHandler : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain"; // 获取参数
string a = context.Request["a"].ToString();
string b = context.Request["b"].ToString();
string c = context.Request["c"].ToString(); // 回传数据
var data = new
{
a = a,
b = b,
c = c
}; context.Response.Write(JsonConvert.SerializeObject(data));
} public bool IsReusable
{
get
{
return false;
}
}
}
}
别自己去拼写json了,Newtonsoft.Json这么好的库不用干啥~
我也这么试过,结果报错为 错误 的请求,我把这三个参数再组成一个json,用这个提交 倒是能正常反回服务器预设的报错