发出一个Ajax调用
问题描述:
这里的时候,我得到一个404我的Ajax调用发出一个Ajax调用
$.ajax({
async: false,
url: "/api/clients/UpdateResourceContactProductsByResourceContactId/" + id,
type: 'POST',
data: { strIds: strIds },
success: function (data) {
}
});
其中id是整数,strIds是整数的字符串contantenation,它们看起来像123_254_741_6650 ...
而这个服务器端代码......
[HttpPost]
public IHttpActionResult UpdateResourceContactProductsByResourceContactId
(int id, string strIds)
{
//...
}
当我打的更新按钮,我收到以下错误:
{"Message":"No HTTP resource was found that matches the request URI
'http://localhost/api/clients/UpdateResourceContactProductsByResourceContactId/22757'.",
"MessageDetail":"No action was found on the controller 'Clients' that matches the request."}
我错过了什么吗?
答
尝试......
$.ajax({
async: false,
url: "/api/clients/UpdateResourceContactProductsByResourceContactId",
type: 'POST',
data: { id: id, strIds: strIds },
success: function (data) {
}
});
+0
我再次404。 – Richard77 2014-09-24 19:41:49
答
我想你传递的数据是错误的。你正在传递一个对象。或者将方法更改为接受JObject,并使用动态将strIds
拉出,单独传递字符串或将其用作URL参数。
//example using JObject below
[HttpPost]
public IHttpActionResult UpdateResourceContactProductsByResourceContactId(int id, JObject data)//JObject requires Json.NET
{
dynamic json = data;
string ids = json.strIds
}
如果你要发布你需要在JavaScript调用过上JSON.stringify它的对象。
var data = JSON.stringify({ strIds: strIds });
$.ajax({
async: false,
url: "/api/clients/UpdateResourceContactProductsByResourceContactId/" + id,
type: 'POST',
data: data,
success: function (data) {
}
});
您是否尝试过的URL: “/ API /客户/ UpdateResourceContactProductsByResourceContactId ID =” +编号+ “&strIds =” + strIds, – artm 2014-09-24 19:28:26
作为@artm说 - 你可以直接导航到'HTTP://本地主机/ API /客户/ UpdateResourceContactProductsByResourceContactId/22757'?如果你真的得到了'404',那么Ajax本身不是责任。 – admdrew 2014-09-24 19:29:22
嗯,我可以告诉你,它不是一个字符串被传递给你的控制器,这是肯定的,因为你发送它作为'POST'的一部分。路由器不会将'strIds'解析为URL的参数,因为它是通过'HTTP BODY'而不是'URL'传递的。就像@artm说的那样,将strIds声明移到URL concocuation中。 – Ohgodwhy 2014-09-24 19:29:56