【问题标题】:Problem with ajax request for delete functionajax请求删除功能的问题
【发布时间】:2018-10-18 17:52:58
【问题描述】:

我有一个添加了删除按钮的“待办事项”应用程序。该应用程序已设置为通过 ajax 请求发布,但删除按钮在单击后会导致页面重新加载。我觉得 preventDefault 应该......很好地防止这种情况发生,但事实并非如此。任何建议将不胜感激!

列出任务的功能

function taskHtml(task) {
        var checkedStatus = task.done ? "checked" : "";
        var liClass = task.done ? "completed" : "";

        var liElement = '<li id="listItem-' + task.id + '" class="' + liClass + '">' +
        '<div class="view"><input class="toggle" type="checkbox"' + " data-id='" +
        task.id + "'" + checkedStatus + ' /><label>' + task.title + 
        '</label><a class="destroy" rel="nofollow" data-method="delete" href="/tasks/' + task.id + 
        '"></a></div></li>';

        return liElement;   

    }

删除任务功能

function deleteTask(e) {
        e.preventDefault();

        var itemId = $(e.target).data("id");

        $.ajax("/tasks/" + itemId, {
            _method: "DELETE",
        }).success(function(data) {
            var liHtml = taskHtml(data);
            var $li = $("#listItem-" + data.id);
            $li.replaceWith('');
        });
    }


    $.get("/tasks").success( function( data ) {
        var htmlString = "";
        $.each(data, function(index, task) {
            htmlString += taskHtml(task);
        });

        var ulTodos = $('.todo-list');
        ulTodos.html(htmlString);

        $('.toggle').change(toggleTask);

        $('.destroy').click(deleteTask);
    });

【问题讨论】:

  • $.ajax("/tasks/" + itemId, { 更改为$.post("/tasks/" + itemId, { 看看是否有效。如果可能,还要检查控制台。
  • @TheAlpha 没有骰子,但我很感激这个小费!

标签: javascript jquery ajax


【解决方案1】:

&lt;a&gt; 标记中删除href。我建议将其更改为 &lt;button&gt;,因为您不会将用户带到任何其他页面。

我也怀疑这行不通:

var itemId = $(e.target).data("id");

尝试将其更改为:

var itemId = $(this).parent().data("id");

【讨论】:

  • 为什么preventDefault() 不会阻止href 被关注?
猜你喜欢
  • 2014-05-29
  • 2019-07-31
  • 2016-12-01
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 2020-11-09
  • 2019-11-07
  • 2019-09-01
相关资源
最近更新 更多