ajax如何实现跨域上传文件
发布网友
发布时间:2022-04-28 16:17
我来回答
共2个回答
热心网友
时间:2022-04-09 12:14
ajax跨域实现方法之跨子域实现ajax:
要求:实现hello.com的页面 异步请求 blog.hello.com下的页面
实现方法:借助iframe,通过设置iframe的src属性,嵌入blog.hello.com下的一个页面,比如AjaxProxy.jsp,然后由该页面去请求Ajax
AjaxProxy请求完毕后,通过parent对象把返回的数据回传给hello.com的主页面。因此,真正的异步请求还是发生在blog.hello.com的域名下
注意:通过这种方法实现的跨子域ajax请求,需要在hello.com的请求页面以及AjaxProxy.jsp页面中设置同样的域名,也就是document.domain = "coolkissbh.com";
注意:关于设置domain的问题,如果是跨全域,使用上面方法时候,firefox下会提示
Illegal document.domain value" code: "1009的错误,因此跨全域只能使用第二种方法处理返回的数据:AjaxProxy.jsp将ajax返回的数据保存到一个全局变量中,hello.com通过setInterval定时去判断iframe的页面是否加载完成,如果加载完成,则获取AjaxProxy.jsp的全局变量值。然后再做其它处理。
热心网友
时间:2022-04-09 13:32
参考例子:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <HTML xmlns="http://www.w3.org/1999/xhtml"> <HEAD><TITLE>AJAX跨域验证</TITLE> <script> var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } } function hello() { var url = 'http://www.google.com'; createXMLHttpRequest(); xmlHttp.onreadystatechange = showResponse; xmlHttp.open("GET", url, true); xmlHttp.send(null); } function showResponse(){ if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { document.getElementById("result").setAttribute("value",xmlHttp.responseText) ; } } } </script> </HEAD> <BODY> <input type="button" value="hello" onclick="hello()"><br/><br/> <textarea id="result" name="result" cols=100 rows=100 ></textarea> </BODY> </HTML>