jQuery Ajax无法调用MVC 4 Controller方法

DrB*_*owe 5 javascript ajax jquery asp.net-mvc-4

我试图使用jQuery来点击某个按钮后触发Ajax调用.我已经阅读了几个可能遇到的语法和问题的例子,但未能找到适合我的工作的解决方案.这是代码.

控制器方法:(HomeController.cs)

    [HttpPost]
    public JsonResult ChangeCompany(string companyCode)
    {
        return Json(new { result = companyCode }, JsonRequestBehavior.AllowGet);
    }
Run Code Online (Sandbox Code Playgroud)

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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

最后,我正在调用此函数:

$('.companyButton').click(function () {
    compCode = $(this).text();
    debug("Click event --> " + $(this).text());
    changeCompany(compCode);
});
Run Code Online (Sandbox Code Playgroud)

我的调试消息显示正常,并且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还是其他一些因素?

Cha*_*mal 6

好的,你的EDIT2似乎是url: '@Url.Action("ChangeCompany", "Home")',在一个单独的JavaScript文件中使用.你只能在.cshtml文件中编写剃刀代码,它在.js文件中不起作用