我正在尝试使用 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 还是其他一些因素?