0

下面的 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,则commneted代码有效"", 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 数组的 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"]

确切的上述数组正在返回。

有人会弄清楚我的代码有什么问题吗?

4

2 回答 2

0

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

var i = 0;
$.each(arrayphp, function () {
      alert(arrayphp[i]);
      i++
 });
于 2013-09-01T08:38:33.430 回答
0

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

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

在第一个函数中,它不存在并且您关闭了“json”数据类型,因此您可能会警告一个看起来非常漂亮的字符串,它看起来像您想要的数据。如果你确定你有dataType: 'json'并删除contentType: application/json',你应该很高兴。

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

$.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 形式返回。

于 2013-09-01T00:14:50.467 回答