AJAX:返回多个变量的问题

时间:2010-12-24 23:42:25

标签: php javascript jquery ajax

首先抱歉,如果我遗漏了一些简单的东西,今天就开始使用AJAX了。我有一个问题,我试图从我的数据库中获取信息,但不同的记录有不同的值。例如,每条记录都有一个“功能”列。在features列中,我存储了一个字符串。 (例如:Feature1~Feature2~Feature3~Feature4 ...)当我构建对象时,我将字符串拆分并将所有要素存储到数组中。有些对象可以有1个功能,其他对象可以有任何功能。那么......如何从我的php页面将这些值返回给我的ajax函数?下面是我正在尝试的ajax函数,我将提供与我的php文件的链接。 [next.php:http://pastebin.com/SY74jV7X]

$("a#next").click(function()
{
    $.ajax({
           type : 'POST',
           url  : 'next.php',
           dataType : 'json',
           data     : { nextID : $("a#next").attr("rel") },
           success  : function ( data ) {

                      var lastID = $("a#next").attr("rel");
                      var originID = $("a#next").attr("rev");

                      if(lastID == 1)
                      {
                        lastID = originID;  
                      }
                      else
                      {
                        lastID--;
                      }


                      $("img#spotlight").attr("src",data.spotlightimage);
                      $("div#showcase h1").text(data.title);
                      $("div#showcase h2").text(data.subtitle);
                      $("div#showcase p").text(data.description);
                      $("a#next").attr("rel", lastID);


                      for(var i=0; i < data.size; i++)
                      {
                          $("ul#features").append("<li>").text(data.feature+i).append("</li>");
                      }

                      /*
                      for(var j=1; j < data.picsize; j++)
                      {
                          $("div.thumbnails ul").append("<li>").text(data.image+j).append("</li>");
                      }
                      */                          
           },
           error    : function ( XMLHttpRequest, textStatus, errorThrown) {
                     $("div#showcase h1").text("An error has occured: " + errorThrown);
           }
    });
});

1 个答案:

答案 0 :(得分:3)

首先在next.php文件中替换以下内容:

for ( $i=0; $i < $arraySize; $i++ )
{
    $return['feature'.$i.''] = $features[0];
}

使用:

$return['features'] = $features;

P.S:当前的代码是错的,你应该有... = $features[$i];,你不需要只是按原样发送数组。然后在JS部分替换:

for(var i=0; i < data.size; i++)
{
    $("ul#features").append("<li>").text(data.feature+i).append("</li>");
}

使用:

$.each(data.features, function(k,v){
    var li = '<li>' + v + '</li>';
    $("ul#features").append(li);
});

这样,不再需要data.size