Javascript Ajax调用未到达控制器方法

Javascript Ajax调用未到达控制器方法,javascript,jquery,ajax,asp.net-mvc,asp.net-ajax,Javascript,Jquery,Ajax,Asp.net Mvc,Asp.net Ajax,是的,有很多帖子都有类似的问题。我试着按照其中的答案进行操作,但是我的ajax调用仍然没有到达controller方法 控制器(SalesController.cs): javascript: $('#species-select').on('change', function () { var species_id = $('#species-select').val(); console.log("species id selected " + species_id);

是的,有很多帖子都有类似的问题。我试着按照其中的答案进行操作,但是我的ajax调用仍然没有到达controller方法

控制器(SalesController.cs):

javascript:

$('#species-select').on('change', function () {
    var species_id = $('#species-select').val();
    console.log("species id selected " + species_id);
    alert("species id selected " + species_id);
    $('#variety-select').empty();
    $.ajax({
        type: 'GET',
        url: '@Url.Action("fillVarietiesSelect", "Sales")',
        data: {species_id : species_id},
        success: function (result) {
            alert(result);
        }
    });
});

on change事件正在触发,并弹出带有正确数据的警报。我在controller方法上设置了一个断点,但执行似乎没有到达那里。

尝试完全按照下面的方法执行

控制器:

    [HttpGet]
    public ActionResult receive2(string p)
    {
        ViewBag.name = p;
        List<string> lst = new List<string>() { p };
        return Json(lst,JsonRequestBehavior.AllowGet);

    }

我已经检查了它的工作情况

您的404错误告诉您@Url.Action未被视图引擎解析。@is Razor语法,因此要使其工作,您需要为C#视图使用.cshtml扩展名,或为VB视图使用.vbhtml扩展名,并使用MVC 3或更高版本。

我也遇到了同样的问题,将参数从
int
更改为
string
解决了问题

在我的服务器端

公共字符串RemoveByDocumentID(int DocumentID)

改成

公共字符串RemoveByDocumentID(字符串DocumentID)

解决了这个问题


在相同的上下文中,我有另一个同名的方法(重载方法)。这也是问题的原因之一,因此我将方法名称设置为唯一的。

您在控制台或“请求网络”选项卡中看到任何错误吗?ASP.NET MVC抛出了太多控制台错误!但最后一个是:
传递给getElementById()的空字符串。jquery-1.10.2.js:188:0获取XHRhttp://localhost:65244/@Url.Action(%22fillVarietiesSelect%22,%20%22Sales%22)
网络面板显示获取@Url.Action(“fillVarietiesSelect”,“Sales”)的404错误。如果您使控制器操作方法返回字符串,则它可以工作。当您返回json时,问题就来了。尝试返回列表,而不是在控制器方法中将HttpGet更改为HttpPost的jsonTry。另外,将ajax类型从“GET”类型更改为“POST”类型。视图是
index.cshtml
。就是这样做的。我认为问题可能是试图将val调用为int而不是字符串,并试图将其作为int发送。
    [HttpGet]
    public ActionResult receive2(string p)
    {
        ViewBag.name = p;
        List<string> lst = new List<string>() { p };
        return Json(lst,JsonRequestBehavior.AllowGet);

    }
      $.ajax({
            type: "GET",
            url: "Main/receive2", // the method we are calling
            contentType: "application/json; charset=utf-8",
            data: { "p": $("#txtname").val() },
             dataType:"json",
            success: function (result) {
                alert("yes");
                alert('Yay! It worked!tim' + result);
                window.location = "http://google.com";
                // Or if you are returning something

            },
            error: function (result) {
                alert('Oh no aa :(' + result[0]);
            }

        });