обратные вызовы javascript на основе вывода html / php, получение переменной - PullRequest
0 голосов
/ 05 апреля 2011

Я использую jquery для публикации данных из форм (через плагин jquery form - http://jquery.malsup.com/form/)

Единственный обратный вызов, который я могу получить (в части "success:"), это "html" с использованием success: function (html) {...}.

Можно ли дифференцировать ответ об успехе только на основе вывода html?

В основном я хочу что-то, что может сделать это ..

success: function (html, some_other_variable) {

if (some_other_variable == 1) {

// сделать что-то

} еще {

// сделать что-то еще

}

* *} Тысяча двадцать-один

Я читал здесь: http://api.jquery.com/jQuery.post/ .. но не повезло

Спасибо заранее, Фил

Ответы [ 3 ]

1 голос
/ 05 апреля 2011

Если бы я понял все правильно, вы могли бы отправить json назад, с любым параметром, который вы хотите.Не знаю, каков синтаксис в PHP, но в .NET MVC вы можете сделать это следующим образом.

Ajax call

$.ajax({ dataType: 'json' ... });

Возвращение результата

return Json(new {status = "your status", html = "your html"}, JsonRequestBehavior.AllowGet);

И в вашем успехе функция обратного вызова

  success: function (response) {
    if (response.status == 'success') {
      var html = response.html;
      // do something with html
    } else {
      // do something else
    }
  }

Надеюсь, это поможет!

0 голосов
/ 05 апреля 2011

Функция success на самом деле отвечает 4 параметрами, responseText, statusText, объектом xhr и обернутым элементом формы jQuery. (документация)

Если вы установите для dataType значение 'json', ответ будет возвращен в формате JSON.

Допустим, страница, на которую вы выполняете POST, отвечает

{
   success: true,
   name: 'hello',
   someothervalue: 'world'
}

И твой код ...

$('form').ajaxForm({
    dataType: 'json',
    success(response, status, xhr, form) {
        alert(response.name);
    }
});

В этом случае response будет заполнен json, и вы сможете получить доступ, как показано.

Хитрость в том, что вам нужна любая страница, к которой относится форма POST, чтобы на самом деле возвращать ответ JSON.

0 голосов
/ 05 апреля 2011

Данные, которые вы возвращаете с сервера, - это данные, которые вы получаете в методе успеха. Вы можете вернуть другую структуру, которая содержит ваш желаемый статус и разметку, которую вы хотите:

{
  "status": 1,
  "html": "<p>Test</p>"
}

И установите для параметра dataType значение «json».

Или вы можете добавить выходной заголовок и запросить этот заголовок из объекта XHR.

...