Возвратите несколько значений в вызове Ajax jQuery

У меня есть функция сообщения jQuery, которая возвращает ответ на успехе после щелчка a div. Однако я хотел бы возвратить несколько переменных на успехе. Сделайте я должен использовать JSON, и если так, это возможный интегрировать его в $.ajax функция после успеха?

$.ajax({
   type: "POST",
   data: "action=favorite&username=" + username + "&topic_id=" + topic_id + "&token=" + token,
   url: "favorite.php",
   success: function(response) {

   }
});

Править
Я ценю общую справку + 1 ко всем!

6
задан informatik01 20 November 2019 в 17:54
поделиться

5 ответов

Было бы неплохо использовать только ответы в формате JSON от сервера. Таким образом, ваш серверный бэкэнд будет действовать как JSON-RPC-сервер, а внешний интерфейс будет полностью независим от него! Конечно, вы можете использовать JSON с функцией $. Ajax . Вот пример:

$.ajax({
    url: 'http://some.url.com/',
    data: 'some=post&data=xyz',
    type: 'POST',
    dataType: 'json',
    success: function(response, statusText) {
        // `response` here is a valid JSON object; jQuery handles the work of parsing the response, etc.
    }
});
13
ответ дан 8 December 2019 в 04:51
поделиться

У меня есть функция jquery post, которая возвращает ответ в случае успеха после щелчка div. Однако я хотел бы вернуть несколько переменных в случае успеха.

Вы можете вернуть только одно значение - кусок текста (в большинстве случаев).

Однако вы можете структурировать этот текст, чтобы вы могли легко извлекать из него различные биты данных.

Обязательно ли использовать JSON

Нет, но это самый простой вариант.

, и если да, то можно ли интегрировать его в функцию $ .ajax после успеха?

Умм. да. Вы читали руководство для функции jQuery ajax ? В нем явно упоминается использование JSON и получение объекта в качестве аргумента функции успеха.

5
ответ дан 8 December 2019 в 04:51
поделиться

Допустим, возвращаемый json выглядит примерно так

{
  firstName: 'Ricardo',
  lastName: 'Jones',
  errors: 0
}

Вы можете использовать метод jQuery getJSON следующим образом:

$.getJSON(
   'favorite.php',
   { 'action': 'favorite', 'username': username, 'topic_id': topic_id, 'token': token },
   function(data) {
     alert(data.firstName);
     alert(data.lastName);
     alert(errors);
   }
)

В возвращающей функции вы можете получить множество переменных, которые вам нужны.

3
ответ дан 8 December 2019 в 04:51
поделиться

Я никогда не программировал на PHP. В asp.net JSON является режимом обмена данными по умолчанию при вызове асинхронного веб-сервиса, поэтому мне как разработчику не нужно беспокоиться о базовых деталях JSON. Думаю, даже jQuery получает данные в формате JSON. Если у вас несколько значений, вы можете получить их в виде списка или словаря.

0
ответ дан 8 December 2019 в 04:51
поделиться

Вам придется возвращать JSON (или другой формат данных, поддерживаемый функцией ajax() jQuery) из favorite.php.
edit: это не обязательно должен быть json, но для нескольких возвращаемых значений его легче всего разобрать. Например, если бы вы возвращали xml или html, вам пришлось бы перебирать узлы, чтобы вернуть значение.

Например, если вы вернули:
{"user": "Joe", "success" : "pass", "message" : "favorite added" }

в success, вы бы использовали:

function(response){
  var user = response.user;
  var success = response.success; // etc.
}

Главное помнить, что dataType в вашем ajax вызове должен быть указан как json. jQuery также поддерживает другие типы данных: xml, html, script, jsonp, text

Я полагаю, что по умолчанию используется html. И, написав php для возврата xml с правильно отформатированными заголовками в php скрипте, я могу сказать, что иногда вам приходится указывать dataType, чтобы jQuery правильно его разобрал.

3
ответ дан 8 December 2019 в 04:51
поделиться