2017-05-15 80 views
0

我試圖使用ajax調用方法將一些數據發送到C#Web API,它與'GET方法'很好地工作到目前爲止這裏是我的代碼但我得到404 Not found錯誤,當我嘗試傳遞參數與 'POST': 的Javascriptajax jQuery 3.1通過POST發送數據到C#

$.ajax({ 
    type: "POST",  //GET or POST or PUT or DELETE verb   
    url: "/api/account/updateuser/",  // Location of the service 
    data: { Email: user, Roles: Roles }, 
    success: function (result) {//On Successful service call 
     console.log(result); 
    } 
}); 

C#控制器:

[HttpPost] 
public string UpdateUser(string Email,string Roles) 
{ 
    return Email; 
} 

我一直在使用谷歌的郵差Chrome擴展也測試了此Web API,它工作正常過,謝謝。

**編輯:當我只發送一個請求沒有參數它工作正常。

[HttpPost] 
public string UpdateUser() 
{ 
    return "HI"; 
} 
$.ajax({ 
       type: "POST",  //GET or POST or PUT or DELETE verb   
       url: "/api/account/updateuser/",  // Location of the service 
       data: {}, 
       success: function (result) {//On Successful service call 
        console.log(result); 
       } 
      }); 
+1

檢查您的瀏覽器開發者工具的網絡標籤,查看呼叫是否成功或者沒有完成,如果沒有錯誤是什麼。 –

+0

這裏有什麼問題? –

+0

你有沒有在apicontroller中指定你的路由URL .. – Abi

回答

0

加入dataTypecontentType更改您的Ajax請求有一個有效的JSON序列化你的服務器端

$.ajax({ 
     type: "POST", 
     url: requestUrl, 
     dataType: "json", 
     contentType: "application/json", 
     success: function (result) {} 
    ); 
+0

感謝您的回覆,但沒有任何改變。 –

0

好像JSON序列化的問題。請檢查一下像下面

var request = JSON.stringify({ 
     Email: user, 
     Roles: Roles 
    }); 

$.ajax({ 
    type: "POST",  //GET or POST or PUT or DELETE verb   
    url: "/api/account/updateuser/",  // Location of the service 
    contentType: "application/json", 
    dataType: "json", 
    data: request, 
    success: function (result) {//On Successful service call 
     console.log(result); 
    } 
}); 

而在C#側

[HttpPost] 
public string UpdateUser(string Email,string Roles) 
{ 
    return Email; 
} 
+0

但它看起來像數據不匹配你解析JSON中的兩個字符串,然後試圖讀取C#中的兩個類 –

+0

用戶和角色是js中的字符串值或對象嗎? – Damith

+0

他們是字符串 –

0

嘗試在你的控制器功能使用的ActionResult返回類型,並返回一個內容結果對象。另外,還要確保你把它發佈到控制器之前,將字符串化JSON -

客戶端腳本:

var userData = { Email: '[email protected]', Roles: 'Software Developer' }; 
      $.ajax({ 
       type: "POST",  //GET or POST or PUT or DELETE verb   
       url: "/api/account/updateuser/",  // Location of the service 
       contentType: 'application/json; charset=utf-8', 
       data: JSON.stringify(userData), 
       success: function (result) {//On Successful service call 
        console.log(result); 
       } 
      }); 

C#控制器代碼:

[HttpPost] 
public ActionResult updateUser(string Email, string Roles) 
{ 
    return Content(Email); 
} 
0

嘗試使用一個對象作爲參數。

您甚至可以使用動態對象參數,因此您不必爲其編寫類。


動態

您的要求保持不變,但你應該添加的數據類型:

$.ajax({ 
type: "POST",  //GET or POST or PUT or DELETE verb   
url: "/api/account/updateuser/",  // Location of the service 
data: { Email: user, Roles: Roles }, 
contentType: "application/json", 
dataType: "json", 
success: function (result) {//On Successful service call 
    console.log(result); 
} 
}); 

而且你的C#控制器是這樣的:

[HttpPost] 
public string UpdateUser(dynamic User) 
{ 
    var roles = User.Roles; 
    var mail = User.Email; 
    return mail; 
} 

用戶等級

或者您爲用戶創建一個類。

class User 
{ string Email; string Roles; } 

並傳遞一個User對象:

[HttpPost] 
public string UpdateUser(User User) 
{ 
    var roles = User.Roles; 
    var mail = User.Email; 
    return mail; 
}