Javascript Ajax获取请求:使用参数还是将数据放入URL?

Javascript Ajax获取请求:使用参数还是将数据放入URL?,javascript,ajax,prototypejs,Javascript,Ajax,Prototypejs,与Ajax GET请求中URL的一部分相比,以参数形式传递数据有什么优势 使用参数: 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&produc

与Ajax GET请求中URL的一部分相比,以参数形式传递数据有什么优势

使用参数:

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}
});

使用
参数
参数的一个优点是,您可以将类似于
散列
的对象而不是字符串传递给它。(如果您这样做,请确保将
方法
参数设置为
“GET”
,因为原型Ajax请求的默认方法是POST;有关更多详细信息,请参阅。)

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

有关更多信息,请参阅。

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

从技术角度来看,除了格式和首选项之外,这其实并不重要,因为get请求总是在URL中包含数据。参数只是构建GET请求的一种方便方式。

我最喜欢使用的参数之一是传入表单的所有字段,而不显式列出它们:

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

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

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

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

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


注意:GET资源的长度有一个硬限制(取决于服务器到服务器)。所以永远不要使用GET发送太多数据

您也可以使用以下格式:

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

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

您是否将Prototype用作ajax库?它看起来像是从方法等。我想接受这个答案,但我没有这样做的链接出于某种原因。它不再是一个链接。这是票数下面的复选标记图像。注意答案。不要忘记,在构建请求url时,任何(好的)AJAX库都会注意将这些特殊字符(ç、ã、空格等)转换为转义字符,这就是优势所在。Prototype的
Form.request
函数使这变得更加容易。给它一个表单,它将使用表单的
action
属性作为URL发出Ajax请求,此外,它将序列化表单并在默认情况下将这些值作为参数传递。您的答案没有引用问题,没有意义,并且您包含了两次“易读性”。