Ajax GET-запросы: используйте параметры или поместите данные в URL-адрес?

В чем преимущество передачи данных в качестве параметров или части URL-адреса в запросе Ajax GET?

Использование параметров:

var ajax = new Ajax.Request('server.php',{
    parameters: 'store=11200&product=Meat',
    onSuccess: function(myData){whatever}
});

Использование URL:

var ajax = new Ajax.Request('server.php?store=11200&product=Meat',{
    onSuccess: function(myData){whatever}
});

Ответ 1

Одним из преимуществ использования аргумента parameters является то, что вы можете передать ему объект Hash -like, а не как строку. (Если вы это сделаете, убедитесь, что для параметра method установлено значение "GET", поскольку метод по умолчанию для запросов прототипа Ajax - POST, см. Prototype Введение в Ajax для более подробной информации.)

Другим преимуществом, которое больше соответствует вашему примеру, является то, что вы можете отделить URL-адрес запроса от параметров, которые ему отправлены. Это может быть полезно, если, например, вам нужно отправить несколько похожих запросов нескольким URL-адресам. (В этом случае использование общих параметров Hash, которые вы изменяете для каждого запроса, может быть более полезным, чем использование строки параметров.)

Для получения дополнительной информации см. документацию Prototype для параметров Ajax.

Ответ 2

Одно из моих любимых применений параметров - передать все поля формы без явного их перечисления:

new Ajax.Request('/myurl.php', {
  method:  'get',
  parameters:  $('myForm').serialize(),
  onSuccess:  successFunc(),
  onFailure:  failFunc()
}

Ответ 3

  • Четкость
  • Простота использования объекта и сериализация его ({store: 11200, product: "Meat"})
  • Четкость

Ответ 4

Чтобы ответить на это, вы должны знать, как работают параметры. HTTP в основном (я знаю, есть больше) имеет два метода для запроса данных: GET и POST.

Для GET параметры добавляются к запрашиваемому вами ресурсу, как в вашем коде выше:/my/resource/name? para1 = bla. Здесь нет никакой разницы, если вы добавляете, если прямо к имени ресурса или использовать параметр. GET обычно используется для запроса данных (его GET;)

Для POST параметры записываются отдельно от ресурса в теле HTTP. Для этого вы должны использовать параметр. POST используется для отправки (огромных) данных.

Чтобы указать, какой метод запроса использовать, используйте опцию метода.

Примечание. Ресурс GET имеет (в зависимости от сервера к серверу) жесткий предел по длине. Поэтому НИКОГДА не отправляйте много данных с помощью GET.

Ответ 5

Вы также можете использовать формат:

var ajax = new Ajax.Request('server.php',{
  parameters: {
     store: 11200,
     product: "Meat"
  }
  onSuccess: function(myData){whatever}
});

Преимуществом этого способа является то, что вы можете перейти от GET к POST без изменения URL-адреса.

Ответ 6

Это не имеет никакого значения с технической точки зрения, кроме форматирования и предпочтения, поскольку запросы всегда содержат данные в URL-адресе. Параметры - это просто удобный способ создания запроса GET.