sar*_*ake 4 asp.net-mvc jquery
在我的控制器中我有
public JsonResult GetInfo(string id)
Run Code Online (Sandbox Code Playgroud)
在我的js
$.ajax({
contentType: 'application/json, charset=utf-8',
type: "POST",
url: "/Incidents/GetInfo",
data: { id: "777" },
cache: false,
dataType: "json",
success: function (response) {
//etc....
Run Code Online (Sandbox Code Playgroud)
jquery ajax错误委托被执行.如果我使用
data: { "777" },
Run Code Online (Sandbox Code Playgroud)
没有错误,但值没有通过.这应该很容易,但我正在撞墙.也许我不被允许将字符串传递给控制器的动作?
我在这做错了什么?
Dar*_*rov 12
您正在指示application/json请求,并且您正在发送application/x-www-form-urlencoded请求.因此,您必须在两种方法中选择一种来编码参数,而不是混合它们.
application/x-www-form-urlencoded:
$.ajax({
type: "POST",
url: "/Incidents/GetInfo",
data: { id: "777" },
cache: false,
dataType: "json",
...
});
Run Code Online (Sandbox Code Playgroud)
application/json:
$.ajax({
type: "POST",
url: "/Incidents/GetInfo",
contentType: 'application/json, charset=utf-8',
data: JSON.stringify({ id: "777" }),
cache: false,
dataType: "json",
...
});
Run Code Online (Sandbox Code Playgroud)
该JSON.stringify方法本身内置于现代浏览器中,用于将javascript文字转换为JSON字符串,这是我们表示将发送请求的字符串.如果您必须支持旧版浏览器,则可以将json2.js脚本包含在包含此方法的页面中.
作为旁注,dataType: "json"不需要设置,因为服务器将设置正确的Content-Type标头,application/json并且jQuery足够智能使用它.
作为第二个注意事项,你真的不想在你的javascript文件中硬编码这样的网址:url: "/Incidents/GetInfo".你想要的是在生成url时使用url helper : url: "@Url.Action("GetInfo", "Incidents")".
| 归档时间: |
|
| 查看次数: |
5587 次 |
| 最近记录: |