jquery как отправить данные json по нескольким ссылкам?

#jquery #json #post

#jquery #json #Публикация

Вопрос:

У меня есть этот код:

 $.ajax({
  type: "POST",
  data: JSON.stringify(formData),
  dataType: "json",
  url: "http://www.test.com/users/"   get_back   "",
  success: function(t){
    alert(t);
  }
});
  

Мне было интересно, как я могу отправлять сообщения по нескольким ссылкам? Должен ли я создать еще одну, $.ajax POST или я могу просто добавить больше url полей в тот же POST?

Спасибо

Ответ №1:

Вам придется проделать это несколько раз, по одному для каждого URL, на который вы хотите отправить. Но есть ярлыки:

 var urls = ["http://www.test.com/users/", "http://www.example.com/users/", "http://www.test.org/users/"]

$.each(urls, function(index, value) {
   $.ajax({
      type: "POST",
      data: JSON.stringify(formData),
      dataType: "json",
      url: value   get_back   "",
      success: function(t){ alert(t); }
   });
});
  

Мы помещаем все URL-адреса, на которые вы хотите опубликовать, в массив JavaScript, а затем с помощью jQuery $.each перебираем их и делаем AJAX POST для каждого из них.

Комментарии:

1. это сработало. Спасибо. что, если я захочу также на лету изменить data: атрибут?

2. Мой ответ позволит вам выбрать те значения по умолчанию, которые вам нравятся, и перезаписать их по мере необходимости. 🙂

3. Рад, что смог помочь. Вы могли бы создать массив объектов JSON, каждый из которых имеет свойство data и url, и выполнять итерации по ним.

Ответ №2:

Вы не можете добавить дополнительные поля режима. Литералы объектов JavaScript (например, {foo:'bar'} ) могут иметь только одно значение для каждого ключа. Браузеры, как правило, интерпретируют {url:'http://example.com', url:'http://example.com/page2'} как {url:'http://example.com/page2'} .

Функциональность ajax jQuery отправляет только один ajax-запрос. Следующий код позволит вам создать объект запроса по умолчанию и перезаписать его элементы по своему усмотрению:

 function createAjaxer(o) {
  var defaults = $.extend({}, o);
  return {
    send: function(o2) {
      var instance = {};
      $.extend(instance, defaults, o2);
      $.ajax(instance);
    }
  }
}
  

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

 var a = createAjaxer({
  type: 'post',
  dataType: 'json',
  success: function() { console.log(arguments); }
});

a.send({
  data: 'yar=5',
  url: 'http://stackoverflow.com'
});

a.send({
  url: 'http://stackoverflow.com'
});
  

Это позволяет установить разумные значения по умолчанию. И основная идея заключается в многократном использовании для самых разных целей.

Ответ №3:

Вы должны выполнять отдельные вызовы для каждого URL, попробуйте использовать $.each для вызова одного и того же кода несколько раз.