【问题标题】:POST and GET executing simultaneously in MVC 4在 MVC 4 中同时执行 POST 和 GET
【发布时间】:2013-09-06 19:05:22
【问题描述】:

单击表格中的项目后,我正在尝试编辑字段。

我向表中的每个对象添加了一个 on clcik 事件,如下所示:

onclick="itemEdit(this)

我的 javascript 函数看起来像:

  function itemEdit(e) {
        console.log($(e).attr("id"));
        var itmId = $(e).attr("id");
        $.ajax({
            url: '@Url.Action("Index", "Scraping")',
            data: {itemId: itmId},
            type: 'POST',
            success: function(data) {
                alert(data);
            }
        });
    }

我在我的 Index 方法中所做的是在页面顶部以更详细的方式加载单击的项目,如下所示:

 public ActionResult Index(string itemId)
        {
            if (itemId != null)
            {
                im.loadItem(itemId.ToString());

            }
            else
            {
                if (im.lstEditModel.Count == 0)
                {
                    im.loadLists();
                }
            }
            return RedirectToAction("Index");

        }

我遇到的问题是,每当我单击一个项目时,索引方法都会执行两次......因此造成了混乱。有什么帮助吗?

【问题讨论】:

  • 你有那个动作的[HttpPost]属性吗?
  • @Jonesy 如果他没有,他手上就会有一个重定向循环。
  • 你是如何将它添加到每个项目中的? JavaScript 事件在对象层次结构中冒泡。因此,onclick 上的单元格冒泡到行冒泡到表格等。如果 Onclick 位于单元格和行和表格上,那么每次点击都会触发多次。
  • 你能显示表格标记以及 GET 和 POST 操作方法吗?
  • 另外我不认为 ajax 调用会找到动作,真的。

标签: c# javascript asp.net-mvc razor


【解决方案1】:

我在该方法上看不到 [HttpPost] 标记,但在方法结束时,您将重定向到另一个 Index 操作...您通常会返回某种 JSON 数据而不是 @987654324 @... 此语句将执行您所描述的操作,调用您的 Get Action。

来自MSDN

向浏览器返回一个 HTTP 302 响应,这会导致浏览器向指定的操作发出 GET 请求。

【讨论】:

    【解决方案2】:

    尝试停止事件冒泡。

    function itemEdit(e) {
    
    e.stopPropagation();       
    
    console.log($(e).attr("id"));
            var itmId = $(e).attr("id");
            $.ajax({
                url: '@Url.Action("Index", "Scraping")',
                data: {itemId: itmId},
                type: 'POST',
                success: function(data) {
                    alert(data);
                }
            });
        }
    

    【讨论】:

      【解决方案3】:

      请忽略这一点,我在添加导致浏览器重新加载我的 JavaScript 代码的 onClick 事件时忘记输入 href="#"。我输入了 href=""

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-04
        • 2013-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-04-21
        • 1970-01-01
        相关资源
        最近更新 更多