![](/img/trans.png)
[英]Jquery $.ajax() call to pass associative array with other params to MVC controller failing
[英]jQuery Ajax failing to call to MVC 4 Controller method
我試圖使用jQuery來點擊某個按鈕后觸發Ajax調用。 我已經閱讀了幾個可能遇到的語法和問題的例子,但未能找到適合我的工作的解決方案。 這是代碼。
控制器方法:(HomeController.cs)
[HttpPost]
public JsonResult ChangeCompany(string companyCode)
{
return Json(new { result = companyCode }, JsonRequestBehavior.AllowGet);
}
jQuery代碼:
function changeCompany(company) {
$.ajax({
url: '@Url.Action("ChangeCompany", "Home")',
type: 'POST',
data: JSON.stringify({ companyCode: company }),
success: function (data) {
alert("Company: " + data);
},
error: function (req, status, error) {
alert("R: " + req + " S: " + status + " E: " + error);
}
});
}
最后,我正在調用此函數:
$('.companyButton').click(function () {
compCode = $(this).text();
debug("Click event --> " + $(this).text());
changeCompany(compCode);
});
我的調試消息顯示正常,並且Ajax調用經常失敗並顯示以下警告: R: [object Object] S: error E: Not Found
我不完全確定如何做到這一點。
我知道關於這個主題有幾個問題,但是它們似乎都沒有解決我的問題,而且老實說我不確定這些代碼塊有什么問題。 任何見解將不勝感激。
編輯:如果值得注意,這是一個移動設備。 在Windows 8 Phone Emulator(Internet Explorer)和jQuery Mobile上進行測試。 不確定這是否會影響Ajax
編輯2:在查看原始網絡調用之后,似乎'Url.Action("ChangeCompany", "Home")'
沒有被轉換為正確的URL而是被直接調用,就好像它是原始URL一樣文本。 這是由於過時的jQuery還是其他一些因素?
好的,你的EDIT2似乎是在一個單獨的JavaScript文件中使用url: '@Url.Action("ChangeCompany", "Home")',
。 你只能在.cshtml文件中編寫剃刀代碼,它在.js文件中不起作用
您在AJAX調用中缺少一些重要參數。 更改您的AJAX調用如下:
function changeCompany(company) {
$.ajax({
url: '@Url.Action("ChangeCompany", "Home")',
type: 'POST',
data: JSON.stringify({ companyCode: company }),
success: function (data) {
alert("Company: " + data);
},
error: function (req, status, error) {
alert("R: " + req + " S: " + status + " E: " + error);
}
});}
然后,您可以使用[HttpPost]
屬性注釋您的控制器方法,如下所示;
[HttpPost]
public JsonResult ChangeCompany(string companyCode)
{
return Json(new { result = companyCode }, JsonRequestBehavior.AllowGet);
}
請注意,您的操作不會直接返回companyCode
。 您將它分配給Json result
屬性因此在您的成功函數中顯示結果您需要:
success: function (data)
{
alert("Company: " + data.result);
}
另外這個: E: Not Found
告訴我你可能有一些路由問題。 如果您在ChangeCompany
Action中設置了一個斷點,它是否被擊中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.