外部jquery文件上的帖子不起作用

时间:2018-10-29 15:24:58

标签: c# jquery asp.net-mvc post

之前,我将ASP.NET MVC5与Jquery 3.3.1一起使用,我在脚本标记内的视图的同一页面上发布了该文章,它工作得很好。但是我听说最好在外部jsfile中使用您的函数。

该帖子用于获取简单的数据数组并填充数据表。

我的jsfile上的其他函数运行良好,但我的帖子返回了一个未找到的404,我在JsonAction上设置了一个断点,但帖子甚至没有调用它。

对不起,我的英语不好

这是我的POST功能:

var url = '@Url.Action("GetCardsData","Card")';

$.post(url).done(function (data) {
    var request = JSON.parse(data);

    var i = 0;
    var exist = false;


    request.filter(function (el) {

        el.filter(function (ul) {

            array[i] = ul;


            i++;


        })

    });

我的JsonAction:

 public JsonResult GetCardsData(string CardNumber) {
        if (CardNumber == null) {
                            CardNumber = "";
        }
        int? Reference_ID = User.Reference_ID;
        Card c = CardRepo.GetCard(Company.Company_ID, CardNumber);

        new AdmSql();
        var cardListq = @"SELECT * FROM  [DEF].[GetCardsData] ({0}, 3)";
        var cardList = DEFRepo.ParseList(DaSql.Query(cardListq, Reference_ID));
        var data = JsonConvert.SerializeObject(cardList);


        return Json(data);
    }

this is the error 404

2 个答案:

答案 0 :(得分:2)

您的var url = '@Url.Action("GetCardsData","Card")';代码很可能位于.js文件中。它不应该在那里,因为Razor无法在此处检测到它,所以您的网址最终看起来仍然是原来的样子,所以404(未找到)是因为没有@Url.Action("GetCardsData","Card"),而是有/Card/GetCardsData。因此,请将此行放入.cshtml页面的内部,如下所示:

<script>
    var url = '@Url.Action("GetCardsData","Card")';
</script>

现在,您的网址将是正确的。

答案 1 :(得分:0)

问题在于' @ Url.Action '在外部 JS文件中不起作用。只能从.cshtml或.vbhtml文件中调用它。

但是,如果您仍然想通过外部JS文件进行调用,则只需在网址中传递'/Card/GetCardsData'