使用 corsproxy 反向代理解决 ajax 请求跨域问题

本地开发一个 RESTFul 网站,开发时 RESTFul 服务器和网页服务器不在一个域下面,部署后将放在同一个域下,这样,本地开发时,跨域问题就会造成请求失败。尝试各种方案都不甚理想,直到找到了 corsproxy 这个神器。

corsproxy 是一个基于 node.js 的反向代理服务,启动后会自动对 ajax 请求进行转发,由于其域是在 localhost 下面的,所以与本地服务器不存在跨域问题。

首先安装服务:

根据提示,将 ajax 请求加上 http://localhost:1337/ 前缀,比如,你要访问 http://my.domain.com/path/to/resource 这个接口,于是将其改为 http://localhost:1337/my.domain.com/path/to/resource。

齐活。

Have fun!

WP 主题中添加 AJAX 响应

为 WordPress Theme 添加可在匿名(未登录)情况下访问的 AJAX 响应,网上资料很凌乱,遂自行记录过程如下。

1. 首先确保主题中有 jQuery 库(似乎这已是各小型网站的标配),没有的话可以在主题 header.php 文件中添加:

2. 然后需要在页面中插入当前网站的 URL 信息,这个信息可以通过如下代码:

如此一来系统将自动在页面中返回 admin-ajax.php 的网络路径了:

于是在将来自己写的 JS 代码中,只需要调用 MyAjax.uri 就能获取到 admin-ajax.php 文件的地址了;

3. 在 function.php 中添加准备用来响应 ajax 请求的 function:

4. 然后开始添加 JS 代码,发送 AJAX 请求,这个放在主题的相应 js 文件里面就行了:

code on Gist

部署完毕,更多内容请参见官方文档

一个最简单的基于PHP+jQuery的AJAX例子

说在前面:本文只作为一个笔记留存用以达到语言重用的效果,可能对于很多大虾过于入门级,请直接无视。

基本上一说起ajax,大家都感觉到比较神秘,我以前也是这样,总觉得这个和荷兰一家足球俱乐部同名的玩意儿是个高深莫测的东西。其实ajax之所以看上去那么蛋疼主要是为了解决各浏览器对js的兼容性问题而写了太多的代码,以至于一看见就头昏。强大简易的jquery扭转了这个局面。

首先说下个人对ajax的简单理解:html、css、js(jQuery等)是给浏览器看的,PHP是给服务器看的,js可以和php对话,而php可以生成html、css和js,以前我们浏览网页的时候,总是通过操作html,通过php告诉服务器我们需要什么内容,然后服务器会在一个新的页面将你请求的信息展示给你;而ajax,即是我们操作html时告诉js,然后js告诉php,php得到命令以后到服务器去取了你要的信息交给js,js再将此信息展示给你。这么看来ajax貌似更复杂一点,但是他带来几个好处:1. 你不需要进入一个新的页面就可以看到你所请求的信息;2.php只需要提取出产生了变化的有限信息即可,减少了重复。

简单扼要的说就是ajax模拟了提交表单的行为,但是把刷新页面这件事交由js在后台偷偷完成了。
继续阅读一个最简单的基于PHP+jQuery的AJAX例子

启用了Ajax Comments-Reply

自从停止使用K2主题以后,就一直很想念他那繁多的让人眼花缭乱的功能,其中以Ajax Comment为甚,一直想自己手动安装一个,可因为懒一直没有去弄。某日发现有个Ajax Comments 2.0,发现功能不咋样还要收取一美刀的费用,遂作罢,于是就看见了这个国货精品:Ajax Comments-Reply,我不清楚一开始是在哪里由谁最先开发的,反正我用的是这位仁兄的作品。安装很简单,上传后激活就可以了,感觉也还不错,最大的好处是,如果你没有什么特别的要求的话,不需要替换comments.php或者修改模板什么的。感兴趣的朋友可以去看看,不好的一点是,这哥们使用的skydrive是打开网页就自动下载的,实在是有点太殷勤,不过这都是小事了。安装后的效果大家可以看看我这篇文章的评论部分..这个插件实际上还是使用了其自制的comments.php,只是其并不需要你覆盖原来的就是了,所以你原先如果对自己的模板评论部分做过hack的话,它们将全部消失,要重新hack过了..
这里说一下Gravatars的参数添加位置,找到插件目录中comments.php文件里的这一段~


其中第二行就是我们要添加进去的,这样应该就可以实现Gravatars头像的显示了..附送我修改过的comments.php (点击下载)
有人说其与SK2不兼容,这个我倒是没怎么看出来,反正先用着呗,出了问题禁用掉插件就可以回到从前了~

AJAX归档插件

安装了一个以AJAX方式显示存档的插件,Extended Live Archive(示例下载)。由于K2模板默认提供了对这个插件的支持,所以只要是使用beta 1 r96以后的版本的K2模板,只要你激活了这个插件就可以直接使用了(昨天安装Gravatar的时候也发现K2模板是直接支持的,K2还真是功能齐全啊)。我正好就是用的K2模板,所以直接享福了,呵呵。 |inline