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 メソッドが 2 回実行され、混乱が生じることです。何か助けはありますか?

4

3 に答える 3

0

そのメソッドにはマークがありません[HttpPost]が、メソッドの最後で、別のIndexアクションにリダイレクトしています...通常は、何らかのJSONデータを返すのではなく return RedirectToAction("Index");...このステートメントはあなたがしていることをしています記述し、Get アクションを呼び出します。

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 に答える