如何在ajax(jquery)的循环中显示从php返回的json数组元素

时间:2013-08-31 19:14:56

标签: jquery json

ajax代码下面是从php接收json数组。我写的评论的其他细节:

 $.ajax({
     type: "POST",
     url: "dbtryout2_2.php",
     data: datastr,
     cache: false,
     //dataType: 'json',
     success: function (arrayphp) {
         //"arrayphp" is receiving the json array from php.
         //below code is working where iam displaying the array directly
         //This code displays the array in raw format.       
         $(".searchby .searchlist").append(arrayphp);
     }

 });

朋友集中讨论这一部分。现在我将使问题变得更清晰和准确: 1)成功函数有两个代码 2)一个是未注释的,另一个是被传播的 3)如果我注释代码“dataType:”json“”,则通知代码有效, 4)但未修改的代码不适用于以下代码当前具有的情况

 $.ajax({
     type: "POST",
     url: "dbtryout2_2.php",
     data: datastr,
     dataType: "json",
     cache: false,
     success: function (arrayphp) {
         $.each(arrayphp, function (i, v) {
             alert(i + "--" + v);
         });
         /*$(".searchby .searchlist").append(arrayphp);*/
     },
     error: function (xhr) {
         console.log(xhr.responseText);
     }

 });

以下是退回JSON ARRAY的PHP代码单元负责人:

 $arrayphp = array();
 //$result is containing the list of albums
 //iam one by one taking the album names and assigning it to $row
 //then from $element iam pushing the elements in $arrayphp
 //after pushing all the elements iam returning the json encoded array to ajax code.  
 while ($row = mysql_fetch_array($result)) {
     $element = $row['cat_name'];
     array_push($arrayphp, $element);
 }
 echo json_encode($arrayphp);
 }

返回的阵列是一个专栏名单:

["album1", "album2", "album5", "album4", "album6", "album7", "album8", "album9", "album10", "album11"]

上面的精确阵列正在回归。

任何人都会想出问题是否与我的代码有关?

2 个答案:

答案 0 :(得分:0)

我尝试了你的功能,当我遗漏这一行时它对我很好:contentType: "application/json",当我添加它时,我开始收到“0”的失败响应。

manual中,它表示在大多数情况下使用此内容类型:'application/x-www-form-urlencoded; charset=UTF-8'(这是默认设置)。因此,除非你有充分的理由,否则我认为你应该删除该行。

在第一个函数中,它不存在并且您关闭了'json'dataType,因此您可能会警告一个非常好看的字符串看起来就像您想要的数据一样。如果您确定自己有dataType: 'json'并删除了contentType: application/json',那么您应该好好去。

编辑:这正是我所使用的,而且效果很好。不知道还有什么建议。您的js中datastr是什么?

$.ajax({
    url:      'dbtryout2_2.php',
    type:     'post',
    async:    true,
    cache:    false,
    dataType: 'json',

    success: function( response )
    {
        // response is returned as json object: ["album1","album2","album3","album4","album5"]
        //console.log(response);

        if ( response )
        {
            $.each(response, function (i, v) {
                alert(i + "--" + v);
            });
        }
    },

    error: function( xhr )
    {
        console.log(xhr.responseText);
    }
});

注意:如果您指定了“dataType:'json'”,则不必使用$ .parseJSON,因为响应已作为JSON返回。

答案 1 :(得分:0)

在你的ajax成功中试试这个:

var i = 0;
$.each(arrayphp, function () {
      alert(arrayphp[i]);
      i++
 });