AJAX: проблемы с возвратом нескольких переменных - PullRequest
0 голосов
/ 25 декабря 2010

Прежде всего, извините, если я что-то упустил, просто начал работать с AJAX сегодня. У меня проблема с тем, что я пытаюсь получить информацию из своей базы данных, но разные записи имеют разное количество значений. Например, каждая запись имеет столбец «функции». В колонке функций я храню строку. (например: Feature1 ~ Feature2 ~ Feature3 ~ Feature4 ...) Когда я строю объект, я разбираю строку и сохраняю все объекты в массиве. Некоторые объекты могут иметь одну особенность, другие могут иметь что угодно. Итак ... как мне вернуть эти значения обратно в мою функцию ajax со своей страницы php? Ниже моя функция 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 Ответ

3 голосов
/ 25 декабря 2010

Сначала замените нижеследующее в вашем next.php файле:

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

С:

$return['features'] = $features;

PS: текущий код неверен, вы должны иметь ... = $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 больше не нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...