使用JSON和AJAX的奇怪循环行为
我们有这些文件: Action.php
array( 'id' => "2", 'name' => "Start", 'password' => "start" ), 1 => array( 'id' => "3", 'name' => "Med", 'password' => 'med' ), 2 => array( 'id' => "4", 'name' => "Last", 'password' => 'last' ) ); echo json_encode($array); ?>
的index.php
Test Name: Sample
Password: Test
和我们的main.js
$(document).ready(function(){ $.ajax({ type: "POST", url: 'action.php', dataType: 'json', success: function(msg){ $.each(msg, function(index, value){ $('.response').clone().attr('id', value.id).appendTo('#res-list'); $('#'+ value.id +' .name').html(value.name); $('#'+ value.id +' .password').html(value.password); }); }, error: function(){ $('.response').html("An error occurred"); } }); });
基本上我想在另一个
输出$array
每个元素
它似乎部分有效。 但不是输出:
Name: Sample Password: Test Name: Start Password: start Name: Med Password: med Name: Last Password: last
它输出
Name: Sample Password: Test Name: Start Password: start Name: Med Password: med Name: Start Password: start Name: Last Password: last Name: Start Password: start Name: Med Password: med Name: Start Password: start
当你这样做时,我觉得:
$('.response').clone().attr('id', value.id).appendTo('#res-list');
使用类“response”克隆所有
元素。 也许您应该给第一个单独的类(或“id”值),以便您可以专门定位它,并确保其他类没有该类。 您当然可以从克隆的类中删除类“响应”:
$('.response').clone().attr('id', value.id).removeClass('response').appendTo('#res-list');
当您克隆“响应”时,您正在克隆包括类在内的所有内容,因此选择器’.response’在您第一次追加后会匹配2个元素。 所以第二次通过数组,你会追加2个新项目,第三次,你附加4个。
要更正此问题,请在克隆元素上调用.removeClass(’response’)。