JQuerypost没有处理动态jQuery元素

注意:这个问题是从post中分离出来的: jQuery没有处理由jQuery创建的元素

我通过每秒调用的ajax调用动态地将列表项添加到jQuery中的列表中。

下面是ajax调用的代码。

$.ajax({ url: 'php/update_group_list.php', data: '', dataType: 'json', success: function(data) { var id = data.instructor_id; group_cnt = data.group_cnt, group_name = data.group_name, group_code = data.group_code; for (i = current_row; i < group_cnt; i++) { //setInterval(function() { $('#group-list-div').load('php/group_list.php'); }, 5000); $('#group-list').append("
  • "+group_name[i]+"
  • "); $('#delete-group-list').append("
    " + "" + "" + "
    "); } current_row = i; $('#group-list').listview('refresh'); $('#delete-group-list').trigger('create'); } });

    当我尝试发送复选框的表单数据时(在上面的ajax调用代码中引用行$(’#delete-group-list’)。blah … blah)post返回错误意外令牌<

    我究竟做错了什么? 我认为这两个问题是相关的,因为我正在创建动态使用的列表项。


    这是与问题相关的额外代码

    HTML:

     

    Check the Box Beside the Groups you Would Like to Delete

    JS代码

     $('#delete-group-form').submit(function(e) { e.preventDefault(); alert($('#delete-group-form').serialize()); if ($('#delete-group-form').serialize() == "") { alert('No groups selected to be deleted.') return false; } else if ($('#delete-groups-form').serialize() == null) { alert('No groups selected to be deleted.') return false; } else { $.post('php/delete_groups.php',$('#delete-groups-form').serialize()).done(function(data) { obj = jQuery.parseJSON(data); var group_codes = obj.group_list; alert(group_codes); alert("The selected groups have been deleted"); window.setTimeout(2000); return false; }); } return false; }); 

    delete_groups.php

     $group_codes); //creating an array of data to be sent back to js file echo json_encode($items); //sending data back through json encoding ?> 

    我认为第二个问题的根源是行$ group_codes = $ _POST [‘groups’]; 特别是$ _POST [‘groups’]因为当我用$ group_codes =’test’替换它时; (仅用于调试目的),代码按预期工作。

    好吧,以前我认为php文件的内容类型标题的错误仍然存​​在(你需要指定用jQuery JSON解析的头类型)。 但又发现了一个错误,我认为问题的原因。

     

    你希望序列化的forms是

     $('#delete-groups-form').serialize() 

    您可以看到ID的差异。 这将返回一个空对象,在php文件中它需要一个从不存在的名为groups的索引。 因此,它将返回一个未定义的索引错误作为以开头的html内容类型,该JSON解析器返回带有unexpected token <的错误unexpected token <

    希望这可以帮助

    当你拨打$_POST['groups']; (在你的delete_groups.php中)它查找从表单元素发送的具有属性name="groups" ,但是你的delete-group-form没有任何这样的元素。

    error unexpected token < ”消息可能来自单独的问题。 validationHTML可能会揭示问题。

    另外,我并不完全清楚你为什么要使用两个独立的函数(JS中的$ .post和$ .ajax)。 除非发生了其他事情,否则我无法从您发布的代码中看到,只需使用一次调用ajax就可以大大简化它。 将一个调用放入$('#delete-group-form').submit(function(e)代替$.post ,并使用ajax调用的数据参数传递groups变量。修改delete_groups.php返回必要的信息(当前从update_group_list.php返回)以更新页面上的显示。