Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON和AJAX的奇怪循环行为_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript JSON和AJAX的奇怪循环行为

Javascript JSON和AJAX的奇怪循环行为,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我们有以下文件: Action.php <?php $array = array( 0 => array( 'id' => "2", 'name' => "Start", 'password' => "start" ), 1 => array( 'id' => "3", 'name' => "Med", 'password' =

我们有以下文件: Action.php

<?php

$array = array(
    0 => 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);

?>
<html>
    <head>
        <title>Test</title>
        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript" src="js/main.js"></script>
    </head>
    <body>
        <div id="res-list">
            <div class="response" id="1">
                Name: <span class="name">Sample</span><br>
                Password: <span class="password">Test</span><br>
            </div>
        </div>
    </body>
</html>
基本上,我希望以不同的
格式输出
$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”:

    $('.response').clone().attr('id', value.id).removeClass('response').appendTo('#res-list');
当您克隆“Response”时,您正在克隆包括类在内的所有内容,因此选择器“.Response”在您第一次追加后匹配2个元素。因此,第二次通过数组,您将附加2个新项目,第三次,您将附加4个项目


若要更正此问题,请在克隆的元素上调用.removeClass('response')。

不应该只调用匹配元素中的第一个('response')吗?@Charlie否,它肯定意味着页面上具有类“response”的所有元素。这就是jQuery如此有用的原因:-)@charlienope;它将所有元素与该类匹配。尝试克隆
$('.response:first')
,或者沿着这些行进行克隆。或者在循环之前缓存
.response
选择,然后在内部克隆它(如果需要保留
response
类)。为了避免将来的问题,请注意使用数字ID不是有效的HTML4。使用
'id'=>“2”
可以将分配给克隆的
.repsonse的id设置为数字。
    $('.response').clone().attr('id', value.id).removeClass('response').appendTo('#res-list');