jQuery教程(第5部分):全部使用AJAX!

如果您还没有阅读以前的教程,建议您先解决这些问题,因为它们会相互依赖。

  • 简介:什么是jQuery,为什么要关心?
  • 1:选择器和基础知识
  • 2:方法
  • 3:等待页面加载和匿名函数
  • 4:事件
  • 使用Chrome开发人员工具进行调试
  • A-What?

    AJAX 异步Javascript和XML 的首字母缩写>,但此处的关键字是异步。异步是指以下事实:这些请求在后台发生,而不中断用户的浏览体验。您可能以前从未注意到它,但是如果网站正在动态更新自身,则很有可能会使用AJAX进行更新。

    在AJAX之前,可以与服务器进行任何形式的交互。从用户那里获取新数据或发布信息,必须使用新的页面加载和重定向来完成。

    今天,我们将研究使用第三方服务Flickr –从我们可以使用AJAX使用JSON数据类型来获取一些图片。 Flickr如何实现事物的接收方实际上并不重要,因为这就是 API 的优点–我们需要知道的只是一个API URL,我们将获取什么样的数据

    为进一步阅读,我不久前写了另一篇关于在WordPress中使用AJAX处理联系表单提交的教程,因此您可能也想检查一下;它涉及编写您自己的PHP处理程序,并将其集成到“官方" WordPress AJAX流程中。

    AJAX方法

    以下是AJAX请求的基本格式:

    乍一看,这看起来相当复杂-缺少此代码插件的缩进功能-但您会看到在现实世界中的示例如此简单。

    Flickr API AJAX < /

    在此示例中,我们将获取与当前WordPress帖子相关联的标签,并获取一些要附加在文章末尾的图像。 jQuery文档中有一个类似的示例,但是它使用了一种称为 getJSON()的快捷方法,而不是说明完整的AJAX格式。如果您知道只返回JSON数据,这是一种有效的处理方式,但我认为学习实际的AJAX方法更为重要,因此我们将采用这种方式。

    首先,一个 single.php ,我们将尝试回显当前帖子标签的简单逗号分隔列表。通常,您将使用 the_tags()来执行此操作,但这不好,因为我们最终希望将它们存储为变量,而 the_tags()会直接将它们回显格式。相反,我们将使用 get_the_tags():

    <?php$tagslist = get_the_tags();foreach($tagslist as $tag){echo $tag->name.",";}?>

    这很好用,因此我们将在AJAX请求中将其输出到Flickr API URL,如下所示(请注意,这是一个屏幕截图–为了保留缩进,此PasteBin上提供了代码。)

    这时,所有操作都将输出到浏览器控制台,或者在出现错误消息时发出警告是一个。要对返回的数据进行实际处理,请在放置图像的位置添加一个地方:

    <div id="flickr"></div>

    ,然后编辑AJAX调用的 success 参数以遍历 items < / em>返回。

    然后我们有了它。我们正在从返回的JSON对象中追加 3个项目(数据的索引为零,因此,如果到达第3个项目,则实际上是第4个项目。我知道这很令人困惑。我们使用 return false 跳出 each()迭代器)。我已经检查了返回对象的内容,所以我知道数据结构,并且只提取链接和IMG参考。如果您想知道还返回了什么,只需在其中扔一个 console.log(item)即可。

    这是我测试站点上的结果以及完整代码在这个PasteBin。请注意,返回的结果基本上是垃圾-我的帖子中包含 DIY 标签,用于步入鸡跑,而Flickr给了我DIY针织服务。真好当然,这是使用API​​并自动执行操作时遇到的障碍之一。您可以重新标记帖子(一项艰巨的任务),更改请求以要求使用“所有"标签,而不是“任何"(在这种情况下可能不返回任何内容),或者提出一个新的自定义字段会指定要与API一起使用的目标关键字(可能是最简单的)。

    SEO注意事项

    这不是重点,但由于您从事的是开发网站时应提及:搜索引擎不会索引页面加载时不存在的内容,例如通过AJAX完成的任何内容。绝对最糟糕的事情是完全博客化AJAX,使主页只是动态加载的所有内容的类似于iframe的容器。明智地使用AJAX来增强页面内容,而不是作为替换。否则将面临可怕的后果。

    感谢您的阅读,希望我给您一些想法。当然,Flickr并不是唯一的API,只有Google“ 公共API ",您一定会找到更多可以使用的东西。

    下周这是jQuery Tutorial系列中的最后一课,我们将介绍jQuery UI插件。与以往一样,欢迎提出意见和建议;如果您有其他人将从中受益的问题,请考虑将其发布到我们的“答案"网站。

    标签: jQuery 编程 Web开发