在MVC4中使用$.AJAX发出AJAX请求

在MVC4中使用$.AJAX发出AJAX请求,ajax,asp.net-mvc,asp.net-mvc-4,razor,Ajax,Asp.net Mvc,Asp.net Mvc 4,Razor,我正在尝试使用MVC4中的$.AJAX和Razor发出一个AJAX请求。我不知道如何实施它 通过使用,我能够成功地进行一个返回数据的链接驱动调用,但我似乎无法从jquery函数内部执行相同的操作。我似乎找不到任何基本的例子来说明如何做到这一点。 这就是我正在处理的问题: HomeController.cs public string test(){ return "It works"; } View.cshtml function in

我正在尝试使用MVC4中的$.AJAX和Razor发出一个AJAX请求。我不知道如何实施它

通过使用,我能够成功地进行一个返回数据的链接驱动调用,但我似乎无法从jquery函数内部执行相同的操作。我似乎找不到任何基本的例子来说明如何做到这一点。 这就是我正在处理的问题:

HomeController.cs

        public string test(){
             return "It works";
        }
View.cshtml

function inventory(dealerID) {
    $.ajax({
        url: '@Url.Action("HomeController","test")',
        data: {dealerID: dealerID},
        type: 'POST',
        success: function(data) {
            process(data);
        }
    });
}

您只需将其设置为
操作结果
。另外,如果您使用的是ajaxpost,那么需要使用
HttpPost
属性标记操作。试试这个:

[HttpPost]
public ActionResult test(string dealerID)
{
    return Content("It works");
}
编辑实际上,语法还有一些其他问题

  • Url.Action
    的控制器/操作参数顺序错误--应先是“ActionName”,然后是“ControllerName”
  • 对于
    Url.Action
    ,如果控制器类是“HomeController”,则只需要“Home”
  • JQuery选项语法错误——应该是
    success:function(data){}


  • 在您的示例中,
    test()
    方法如何从您发送的JSON中获取
    dealerId
    ?我是否应该假设它作为参数传递给方法,而您只是忽略了它?@crush是的,没错。MVC路由系统足够灵活,可以从任何可用的地方提取控制器参数——查询字符串、post数据或路由数据。@McGarnagle:如何将C代码添加到外部js文件中?我知道如何处理html文件,但不知道如何处理js文件。最好将外部依赖性从JS中剔除;或者将依赖C#的JS作为内联脚本或局部视图包含。
    $.ajax({
        url: '@Url.Action("test", "Home")',
        data: {dealerID: dealerID},
        type: 'POST',
        success: function(data) {
            alert(data);
        }
    });