【发布时间】:2015-12-24 04:15:51
【问题描述】:
我通过 ajax 将字符串传递给 mvc 中的操作方法, 下面是我的ajax调用
$("#btnEncrypt").click(function () {
var pay = JSON.stringify({
'payload': {"exp":1442515543,"method":"Login"},
'secretKey': "123456"
});
$.ajax({
type: "POST",
url: '@Url.RouteUrl("GetData")',
data: pay,
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("Success");
},
error: function () {
alert('error');
}
});
});
下面是我传递了两个参数的动作方法(生成)
[HttpPost]
public ActionResult Generate(string payload, string secretKey)
{
Here I am getting payload as "{\"exp\":1442515543,\"method\":\"Login\"}"
instead of "{"exp":1442515543,"method":"Login"}"
}
那么,我怎样才能得到我通过 ajax 调用传递的原始请求
"{"exp":1442515543,"method":"Login"}"
在没有转义字符的操作方法中?提前谢谢你:)
注意: 1) 我曾尝试不使用 stringify 作为请求参数,但它不起作用。 2)这里的参数(exp和method)根据不同的请求而变化,我有大约200个请求,它们都使用不同的参数。
【问题讨论】:
-
你知道
"{\"exp\":1442515543,\"method\":\"Login\"}"在运行时等于"{"exp":1442515543,"method":"Login"}"吗?我没搞错 -
您确定这些转义符在实际字符串中,而不仅仅是在调试器视图中吗?
-
payload应该是包含属性exp和method的模型,而不是string(更好的是,包含secretKey的属性,这样您只有一个参数)。 -
@M.kazemAkhgary 我检查了 Watch(Name : Value) 中的字符串,结果与转义字符相同。
-
@StephenMuecke 如果有效载荷是模型应该会更好,但是这里我的有效载荷根据请求而变化,所以我无法创建一个模型并定义此属性。
标签: c# json ajax asp.net-mvc stringify