Ajax调用没有达到控制器方法

时间:2015-05-26 02:12:13

标签: javascript jquery ajax asp.net-mvc asp.net-ajax

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

controller(SalesController.cs):

[HttpGet]
public JsonResult fillVarietiesSelect(int species_id)
{
    String[] alist = {"a","b","c"};
    return Json(alist, JsonRequestBehavior.AllowGet);
}

的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 change事件正在触发,警报会弹出正确的数据。我在控制器方法中设置了断点,但执行似乎没有达到目的。

3 个答案:

答案 0 :(得分:1)

尝试完全像下面的

控制器:

    [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]);
            }

        });

我检查了它的工作

答案 1 :(得分:1)

我遇到了同样的问题,将参数从<rule_name>更改为int解决了问题。

在服务器端,我有,

  

public string RemoveByDocumentID(int DocumentID)

将其更改为

  

public string RemoveByDocumentID(string DocumentID)

解决了这个问题。

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

答案 2 :(得分:0)

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