被JQuery $ .each行为困扰

时间:2017-01-08 00:29:01

标签: php jquery arrays

我有一个php文件,在调用时返回一个简单的非关联字符串值数组。当我使用jQuery get例程请求数组时,我得到了我期望的数组,但是当我尝试迭代它时,$ .each命令迭代每个char,而不是获取两个字符串值。我不明白我的错误。

我的代码:

<div name ="test_spot" id ="test_spot" width="200" height="400">Test</div> 

<script type="text/javascript">

function getOutput(){

    $.get( "data.php", function( data ) {

        // This call verifies the the array is what I would expect.
        // ["one","two"]. Then I comment this out and run the code below.
        //$( "#test_spot" ).html( data);

        $.each(data,  function(index, value){

            // This outputs each char instead of each string each on its own line in the div.
            // [
            // "
            // o
            // n
            // e etc
            $('#test_spot').append($('<p>').text(value)); 

        });

    });
}

</script>

<button onClick="getOutput()" style="height: 60px; width:100px;" >Test</button>

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您期待一个对象,但正在返回一个JSON字符串。当您将其传递给.each时,它会迭代字符串中的字符。

尝试将dataType指定为json,如下所示:

$.get( "data.php", function( data ) { 
        $.each(data,  function(index, value){ 
             $('#test_spot').append($('<p>').text(value)); 
        });

}, "json" );

或者,就像charlietfl指出的那样,只需使用

$.getJSON( "data. php", function( data ) {
        $.each(data,  function(index, value){ 
             $('#test_spot').append($('<p>').text(value)); 
        });
});

如果仍然无效,我会查看输出并确保它是有效的JSON。