Добавление HTML к определенному DOM после вызова ajax - PullRequest
0 голосов
/ 06 марта 2011

На моей странице php есть три списка ul # line, ul # comment, ul # Голос.

Я собираюсь сделать ajax-вызов, что-то вроде

           $.ajax({
        type: "POST",
        url: "ajax.php",
        data: dataString,

        cache: false,
        success: function(html){
            $("ul#line").append(html);
            $("ul#lineli:last").fadeIn("slow");
    }

Ajax.php - это что-то вроде

if(isset($line)){
    echo $line;
} elseif(isset($comment)){
    echo $comment;
} elseif (isset($vote)){
    echo $vote;
} else {
   //do nothing;
}

Что мне нужно, если отображаемый HTML-код равен $ line, он будет добавлен к ul # line;если это $ comment, оно будет добавлено к ul # comment;если это - $ голос, он будет добавлен к ul # голосу.

Текущий вызов ajax добавляется только в строке ul #.

Что мне нужно изменить, чтобы добиться этого ??

Ответы [ 3 ]

2 голосов
/ 06 марта 2011

Я бы передал информацию как JSON.Иметь что-то вроде:

{updateList : nameOfList, output: $line/$output/$vote }

Тогда в случае успеха вы можете сделать что-то вроде

$('#'+html.updateList).append(html.output);

Вы должны обязательно сообщить jQuery, что вы отправляете, и принять json в качестве типаназад, хотя.

2 голосов
/ 06 марта 2011

php

class DataObject
{
    public $Type;
    public $Text;
}
    $json=new DataObject();

if(isset($line)){
    $json->Type="line";
    $json->Text=$line;
    return json_encode($json);
} elseif(isset($comment)){
    $json->Type="comment";
    $json->Text=$comment;
    return json_encode($json);
} elseif (isset($vote)){
    $json->Type="vote";
    $json->Text=$vote;
    return json_encode($json);
} else {
   //do nothing;
}

javascript

    $.ajax({
    type: "POST",
    url: "ajax.php",
    dataType: 'json',  //add data type
    data: dataString,    
    cache: false,
    success: function(data){
        $("ul#"+data.type).append(data.text);
        $("ul#"+data.type+"li:last").fadeIn("slow");
     }
1 голос
/ 06 марта 2011

Вам нужно каким-то образом различать значения $line и $comment.

Я бы посоветовал отправить обратно JSON из вашего PHP-скрипта:

if(isset($line)){
    echo '{"line" : ' . json_encode($line) . '}';
} elseif(isset($comment)){
    echo '{"comment" : ' . json_encode($comment) . '}';
} elseif (isset($vote)){
    echo '{"vote" : ' . json_encode($vote) . '}';
} else {
   //do nothing;
}

Примечание: PHP - не самый сильный мой язык, так что может быть лучший способ сгенерировать JSONответ

success: function(data){
           if(data.line) {
              $("ul#line").append(html);
              $("ul#lineli:last").fadeIn("slow");
           }
           else if(data.comment) {
              $("ul#comment").append(html);
              $("ul#commentli:last").fadeIn("slow");
           }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...