日期:2014-05-16 浏览次数:20357 次
在javascript中经常会使用ajax,但就是跨域这个问题搞得好多人都不知道怎么办,挺烦人,今天看到一个博客有一个解决方案,很不错,本人已测试真的可以。
由于安全性问题, ajax在进行请求数据时,不能跨域请求.?
比如 在 www.a.com 下的页面, 无法ajax请求www.b.com/ajax.php的内容.?
尽管这样的需求不多,但遇到了怎么办??
这里给出一个JS模拟ajax的方式实现跨域, 但仅仅局限于GET!
在 <script> 标签中, src的属性是可以设置非本域下的地址的. 借助此特点,即可模拟ajax的方式实现跨域.?
假设 www.a.com 域名下的程序 需要通过ajax方式提交数据到 www.b.com 下的login.php?username=*&passwod=*实现登陆判断.?
实现方式如下:?
在www.a.com内动态创建JS的方式来加载www.b.com的内容,代码如下?
JavaScript代码
//此代码在www.a.com下 var head = document.getElementsByTagName("head")[0]; var js = document.createElement("script"); js.src = "http://www.b.com/login.php?username=*&passwod=*"; js.onload = js.onreadystatechange = function() { if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") { head.removeChild(js); //JS加载完毕了. 类似于ajax请求完成. //执行是否登陆成功的判断 } } head.appendChild(js);
?
这只是一个简单的例子,需要b.com下的login.php做好配合,login.php通过GET取得传入值,并生成JS的登陆标记.
JS加载完成后,根据JS标记判断登陆的状态,提示登陆成功或失败.即可完成要求,代码兼容常见浏览器. :)
当然缺陷也很明显,只能支持GET的方式提交数据.
下一次我会在说说ajax跨域POST的方法.
?