0

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

我向表中的每个对象添加了一个 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");

        }

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

4

3 回答 3

0

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

于 2013-09-06T20:11:39.843 回答
0

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

来自MSDN

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

于 2013-09-06T19:14:14.803 回答
0

尝试停止事件冒泡。

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);
            }
        });
    }
于 2013-09-06T19:15:17.937 回答