【问题标题】:Ajax call not posting data to controllerAjax 调用未将数据发布到控制器
【发布时间】:2017-12-15 14:01:59
【问题描述】:

我有一个包含整数值数据的 html 列表,我想将这些整数发布到控制器。尽管如此,jquery 代码实际上什么也没做,甚至没有出现错误消息。调用 jquery 的按钮位于模式框中。代码如下:

    <script type="text/javascript">
$(function () {
    $("#additem-dialog").dialog({
        modal: true,
        autoOpen: false,
        buttons: {
            "Add": function () {
                var proList = document.getElementsByClassName("proItem").value;
                 $.ajax({
                    type: "POST",
                    url: '@Url.Action("SetTempList","Admin")',
                    data: JSON.stringify(proList),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function () {
                        alert('success!');
                    },
                    failure: function (response) {
                        alert(response);
                    }
                });
                $("#search-form").submit();
            },
            Cancel: function () {
                $(this).dialog("close");
            }
        }
    });
    $("#opener").on("click", function () {
        $("#additem-dialog").dialog("open");
    });
});

这是控制器动作:

    [HttpPost]
    public void SetTempList(List<int> proList)
    {
        TempData["detailList"] = proList.ToList();
    }

不知道是什么问题,我尝试了其他各种数据来测试ajax调用,还是不行。

【问题讨论】:

  • 定义“什么都不做”。 JavaScript 代码会执行吗?当您在浏览器中调试它时,它会做什么?浏览器的调试控制台有错误吗?是否进行了 AJAX 调用?它是否包含您期望的数据?那是什么数据?服务器的响应是什么? “什么都不做”并没有真正提供太多信息。如果一开始没有任何东西调用此代码,那么显然问题不在此代码范围内。
  • 我唯一知道这个ajax调用返回空值...
  • 嗯,服务器端方法的返回类型是void。所以我不希望它返回一个值。 void 字面意思是“这个方法不返回任何东西”。您究竟期望会发生什么以及会发生什么

标签: javascript jquery asp.net-ajax


【解决方案1】:

据我所知,您尝试发布到的 URL 只是一个字符串,还是被您正在使用的框架替换?

检查 POST 是否发送到正确 URL 的一个好方法是启用开发者控制台(在大多数浏览器中为 F12)并在按“添加”后检查网络选项卡。

【讨论】:

  • 好吧,我发现 proList 不可读的问题,还是谢谢 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 2023-02-02
相关资源
最近更新 更多