在 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}
});
有帮助吗?

解决方案

使用 parameters 参数的一个好处是,您可以将它传递给 Hash 类似的对象而不是字符串。 (但是,如果你这样做,请确保将方法参数设置为" GET" ,因为Prototype Ajax请求的默认方法是POST;请参阅 Ajax原型简介了解更多详情。)

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

有关详细信息,请参阅 Ajax选项的Prototype文档

其他提示

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

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

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

对于GET,参数会附加到您请求的资源上,就像您在上面的代码中所做的那样:/ my / resource / name?para1 = bla。如果您直接附加到资源名称或使用参数选项,则没有区别。 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。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top