несколько возвращаемых значений из PHP с JQuery AJAX - PullRequest
27 голосов
/ 04 января 2011

Я использую этот код jQuery:

$.ajax
({
    type: "POST",
    url: "customerfilter.php",
    data: dataString,
    cache: false,
    success: function(html)
    {
        $(".custName").html(html);
    }
});

Как я могу сделать что-то вроде этого: $(".projDesc").html(html1); Таким образом, я могу разделить возвращенные результаты на два элемента HTML?

echo "<p>" .$row['cust_name']. "</p>";

это тот PHP, который я использую, и я хочу повторить другое утверждение, которое я могу вставить в другой HTML-элемент

Имеет ли это смысл?

Ответы [ 3 ]

59 голосов
/ 04 января 2011

Используйте json_encode() для преобразования ассоциативного массива из PHP в JSON и используйте $.getJSON(), который вернет массив Javascript.

Пример:

<?php echo json_encode(array("a" => "valueA", "b" => "valueB")); ?>

В JavaScript:

$.getJSON("myscript.php", function(data) {
  alert("Value for 'a': " + data.a + "\nValue for 'b': " + data.b);
});
46 голосов
/ 04 января 2011

Чтобы ваш ответ возвращал JSON, вам нужно изменить свой jQuery на этот, поэтому ожидаемый тип данных - json:

$.ajax
({
    type: "POST",
    url: "customerfilter.php",
    dataType: 'json',
    cache: false,
    success: function(data)
    {
        $(".custName").html(data.message1);
        $(".custName2").html(data.message2);
    }
});

Затем вам нужно закодировать ваш ответ в виде массива JSON:

 <?php echo json_encode(
      array("message1" => "Hi", 
      "message2" => "Something else")
 ) ?>
3 голосов
/ 04 января 2011

Почему бы вам не вернуть JSON объект. Таким образом, вы можете легко поместить много разных результатов в ответ ajax.

...