php - 处理从 jQuery 中的 AJAX 调用返回的数据

标签 php javascript jquery ajax post

我有一个使用 jQuery 的 AJAX 调用:

$('.add a').click(function() {
    $.ajax({
        type: 'POST',
        url: '/ajax/fos',
        context: this,
        datatype: 'html',
        success: function(data){
            $(this).parents('tr').before(data);
        }
    });
});

运行后,它会向表中添加一个新行。该行是表中其他行的逐字记录(结构方面),但没有数据。

我有两个其他 jQuery 调用来操作行上的数据,但这些调用不适用于使用 AJAX 调用的新表行。具体来说,当下拉(选择/选项)列表更改时,它会执行 AJAX 调用以替换另一个下拉列表的内容。如果您想删除该行,另一个函数会删除它。

这些是不起作用的功能:

$('.fos').change(function() {
    $.ajax({
        type: 'POST',
        url: '/ajax/courses',
        context: this,
        data:({
            fos_id: $(this).val(),
            name: $(this).find(':selected').text()
        }),
        success: function(data){
            $(this).next().html(data);
        }
    });
});

$('td.remove a').click(function() {
    $(this).parents('tr').remove();
});

这是否与 AJAX 调用没有向 DOM 注册新行有关,或者不能这样做?

最佳答案

当您运行 document.ready 上的代码时,jQuery 确实会在那个时间点 将事件绑定(bind)到所有现有行。要使 jQuery 知道可能的 DOM 更改,您需要使用 jQuery 的 live功能。为了以最佳方式做你想做的事,你可能想使用 delegate像这样:

$("#yourTable").delegate("select.fos", "change", function(){
    // ....
});

$("#yourTable").delegate("td.remove a", "click", function(){
    // ....
});

它的工作方式是通过将事件绑定(bind)到选择器 (#yourTable) 并让事件向上冒泡,以便涵盖对表格内容的任何修改。

关于php - 处理从 jQuery 中的 AJAX 调用返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3748069/

相关文章:

javascript - 如何为处于事件(按下)状态的新创建的 html 按钮添加背景图像?

php - TIMEDIFF GROUP BY 涉及天数

PHP 读取 xlsx Excel 2007 文件

javascript - 使用 moment.js 将 date() 设置为用户时区的午夜

javascript - 我可以将 Backbone View 组件引用到另一个组件 View 中吗

jQuery 与 .hasClass() 相反?

javascript - AngularJS 动态输入值绑定(bind)到数组模型

javascript - 将列表中的类附加到 URL

php - PHP使用XPath查找有值(value)的标签

php - Jquery提交和发布发布无法返回数据的表单