2014-09-24 46 views
1

這裏的時候,我得到一個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."} 

我錯過了什麼嗎?

+2

您是否嘗試過的URL: 「/ API /客戶/ UpdateResourceContactProductsByResourceContactId ID =」 +編號+ 「&strIds =」 + strIds, – artm 2014-09-24 19:28:26

+2

作爲@artm說 - 你可以直接導航到'HTTP://本地主機/ API /客戶/ UpdateResourceContactProductsByResourceContactId/22757'?如果你真的得到了'404',那麼Ajax本身不是責任。 – admdrew 2014-09-24 19:29:22

+1

嗯,我可以告訴你,它不是一個字符串被傳遞給你的控制器,這是肯定的,因爲你發送它作爲'POST'的一部分。路由器不會將'strIds'解析爲URL的參數,因爲它是通過'HTTP BODY'而不是'URL'傳遞的。就像@artm說的那樣,將strIds聲明移到URL concocuation中。 – Ohgodwhy 2014-09-24 19:29:56

回答

0

嘗試......

$.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

0

我想你傳遞的數據是錯誤的。你正在傳遞一個對象。或者將方法更改爲接受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) { 
    } 
});