【问题标题】:jQuery and AJAX what should I use?jQuery 和 AJAX 我应该使用什么?
【发布时间】:2010-03-29 15:32:33
【问题描述】:

我决定使用 jQuery 来满足我所有与 AJAX 相关的客户端需求。 但是 jQuery 为同一个任务提供了太多的函数:$.post、$.get、$.ajax、$.getJSON... 我的问题是我应该使用什么?

编辑: 我将使用 POST 和 JSON 连接到 CodeIgniter PHP 框架。

谢谢。

【问题讨论】:

  • 定义“需求”。一旦你这样做了,你就会知道该使用什么。
  • 如果您指定您使用的技术,您将获得更相关的答案。例如,如果您使用 .Net 和 Web 服务,您可能应该只使用 $.ajax()(见下面的帖子)。
  • 你是对的,编辑了问题。

标签: jquery ajax post get


【解决方案1】:

这真的取决于,它不是 AJAX 或 jQuery 特定的,它是关于 HTTP 协议的。

POST 方法应该用于发送一次提交的数据,如表单。 POST & GET 方法没有相同的长度限制,您可以使用 POST 发送比使用 GET 更多的数据。

GET 用于“获取”静态页面。 (虽然这不是真的,但无论如何,你明白了)

例如,当提交表单时,使用 POST 方法,因为结果内容是特定于该请求的。

您还必须注意,您的浏览器或 jQuery 永远不会缓存 POST。

$.post & $.get 只是 $.ajax(options); 的代理方法;

并且 $.getJSON 专门设计用于仅使用 GET 方法处理 JSON 结果(感谢 thedp)

【讨论】:

  • 只是想补充一点:$.getJSON 是只在GET下处理JSON。
【解决方案2】:

使用$.ajax 并始终始终包含error 参数(简写$.post$.get 莫名其妙地遗漏了——有时短有点短)。除非你生活在一个永远不会出错的完美世界,在这种情况下,我在哪里签名? :-)

【讨论】:

    【解决方案3】:

    它们中的大多数只是我通常使用的 $.ajax 的简写。

    【讨论】:

      【解决方案4】:

      这真的取决于情况。

      但是,如果您将 ASP.Net 与 Web 服务一起使用,您可能需要使用 $.ajax 方法,因为您需要传递一个空数据集。

      这篇博文解释了原因:

      http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

      一个例子:

      $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "WebService.asmx/WebMethodName",
        data: "{}",
        dataType: "json"
      });
      

      如您所见,$.ajax() 方法允许您指定“GET”(在查询字符串中传递)或“POST”(在请求中传递)

      是的,它更“复杂”,但您可以使用 $.ajaxSetup() 来简化调用:

      这是一篇关于此的博客文章: http://encosia.com/2009/07/21/simplify-calling-asp-net-ajax-services-from-jquery/

      该页面的示例:

      $.ajaxSetup({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: "{}"
      });
      

      这将为 $.ajax 中的值设置默认值,因此您无需设置它们。

      您的代码可以如此简单:

      $.ajax({
         url: "HelloWorld.asmx/Hello",
         success: function(msg) {
            /* Do Stuff */
        }
      });
      

      甚至:

      $.ajax({ url: "HelloWorld.asmx/Hello" });
      

      【讨论】:

        【解决方案5】:

        不,问题是你想做什么?

        如果您以非 JSON 格式发回数据,则没有理由使用 $.getJSON。

        $.ajax 更可定制,但比其他函数更复杂。

        我通常在 $.post 和 $.get 之间进行选择。

        【讨论】:

          【解决方案6】:

          $.post 和 $.get 和 $.getJSON 都是包装 $.ajax 的便捷方法。您选择的只是风格问题。

          【讨论】:

          • 对于一个简单的风格决定来说这一切似乎有点奇怪。
          • 这与风格无关,而与需求有关。需要由 ajax 解决方案的服务端决定。应使用 http POST 或 http GET 是合同的一部分。如果您使用 .get 来检索恰好是 JSON 的数据,$.getJSON 是一个很好的便捷方法
          • 如果需要,就没有通用的 $.ajax 函数。
          • @BC 正好符合我的问题,那你为什么需要$.ajax
          • 一致性?概括? (风格?)
          【解决方案7】:

          The documentation 用于像 $.get()$.post() 这样的简写方法,描述了 $.ajax() 等价物是什么。

          例如获取描述:

          $.ajax({
            url: url,
            data: data,
            success: success,
            dataType: dataType
          });
          

          小故事:阅读文档了解什么是什么,什么满足您的需求

          【讨论】:

          • 我确实读过,这让我很困惑。为什么我应该 $.ajax 而不是 $.post 和其他方式。
          • 有时$.post$.get 不够灵活。上次我需要$.ajax 我需要同步的get 请求,其中$.get 是异步的。
          猜你喜欢
          • 2013-01-27
          • 2023-03-27
          • 1970-01-01
          • 2012-12-13
          • 2015-12-12
          • 1970-01-01
          • 1970-01-01
          • 2012-05-12
          • 2012-01-05
          相关资源
          最近更新 更多