JQuery ajax - можно ли вернуть два разных набора данных об успехе? - PullRequest
1 голос
/ 04 ноября 2010

Используя этот ajax-запрос, я возвращаю фрагмент представления заполненного html для вставки в определенный div внутри макета.

мой вопрос: как мне объявить #theDiv, у меня есть идентификатор, доступный в точке, где создается фрагмент представления (внутри view_Controller).

В идеале я бы вернул немного json нанапример, указав: #theDiv и любые другие параметры, например, какой элемент навигационной панели должен быть активным и т. д. *

    $.ajax({
      type: "POST",
      url: "controller/view_Controller.php",
      data: dataString,
      cache: false,
      dataType: "html",
      success: function(html){

           $('#theDiv').html(html)

        };
        });

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

Вам нужно построить массив информации на бэкенде:

$data = array (
    'html' => $html,
    'target' => '#myDiv'
);

header('Content-type: application/json');
echo json_encode($data);

А в вашем JS:

$.ajax({
    type: "POST",
    url: "controller/view_Controller.php",
    data: dataString,
    cache: false,
    dataType: "json",
    success: function(data){
       $(data.target).html(data.html)
    };
});

Я не совсем понимаю, что вы подразумеваете под определением успеха и ошибки - вы хотите сказать, что вы хотите, чтобы ваш скрипт мог определять Javascript, который будет вызываться при успехе?

1 голос
/ 04 ноября 2010

Попробуйте вместо этого:

$.ajax({
          type: "POST",
          url: "controller/view_Controller.php",
          data: dataString,
          cache: false,
          dataType: 'json',
          success: function(data){

               $(data.id).html(data.html)

         };
});

Пусть скрипт вернет объект JSON с атрибутом id, равным id элемента, а для элемента html будет задана строка HTML, с которой вы хотите установить его.

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