Ajax GET请求:使用参数或将数据放入URL?

时间:2008-10-20 13:22:42

标签: javascript ajax prototypejs

在Ajax GET请求中将数据作为参数传递到URL的一部分有什么好处?

使用参数:

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

使用网址:

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

6 个答案:

答案 0 :(得分:13)

使用parameters参数的一个好处是,您可以传递一个类似Hash的对象而不是字符串。 (但是,如果这样做,请确保将method参数设置为"GET",因为Prototype Ajax请求的默认方法是POST;有关详细信息,请参阅the Prototype Introduction to Ajax。)

与您提供的示例更为一致的另一个优点是,您可以将请求URL与发送给它的选项分开。例如,如果您需要向多个不同的URL发送大量类似的请求,这可能很有用。 (在这种情况下,为每个请求修改一个公共参数Hash可能比使用参数字符串更有用。)

有关详细信息,请参阅the Prototype documentation of Ajax options

答案 1 :(得分:9)

参数最常用的一种方法是传入表单的所有字段而不明确列出它们:

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

答案 2 :(得分:1)

  • 易读性
  • 易于使用对象并将其序列化({store: 11200, product: "Meat"}
  • 易读性

答案 3 :(得分:1)

要回答这个问题,您应该知道参数的工作方式。 HTTP基本上(我知道还有更多)有两种方法来请求数据:GET和POST。

对于GET,参数会附加到您请求的资源上,就像您在上面的代码中所做的那样:/ my / resource / name?para1 = bla。如果您直接附加到资源名称或使用参数选项,则没有区别。 GET通常用于请求数据(GET;)

对于POST,参数与HTTP正文中的资源分开编写。为此,您必须使用参数选项。 POST用于发送(巨大的)数据。

要指定要使用的请求方法,请使用方法选项。

注意:GET资源具有(取决于服务器到服务器)对长度的硬性限制。所以永远不要使用GET发送大量数据。

答案 4 :(得分:1)

您还可以使用以下格式:

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

这样做的好处是你可以在不改变URL的情况下从GET更改为POST。

答案 5 :(得分:0)

除了格式化和首选项之外,从技术角度来看并不重要,因为get请求始终拥有URL中的数据。参数只是构建GET请求的便捷方式。