AJAX GET запросы: использовать параметры или поместить данные в URL? - PullRequest
10 голосов
/ 20 октября 2008

В чем преимущество передачи данных в виде параметров по сравнению с частью 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}
});

Ответы [ 6 ]

13 голосов
/ 20 октября 2008

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

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

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

9 голосов
/ 20 октября 2008

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

new Ajax.Request('/myurl.php', {
  method:  'get',
  parameters:  $('myForm').serialize(),
  onSuccess:  successFunc(),
  onFailure:  failFunc()
}
1 голос
/ 20 октября 2008

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

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

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

1 голос
/ 20 октября 2008

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

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

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

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

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

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

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

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