易截截图软件、单文件、免安装、纯绿色、仅160KB

Ajax跨域问题研究笔记

作者:fbysss
msn:jameslastchina@hotmail.com 
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:Ajax跨域
一.试验准备
    修改c:/windows/system32/drivers/etc/hosts文件,加入127.0.0.1 www.a.com www.b.com
    Tomcat/webapps下建立crossdomain目录,建立一个空的WEB-INF目录,创建page_on_site_b.jsp和index_on_site_a.jsp。
page_on_site_b.jsp内容如下:
var varonb='this is a var on site b.';
alert('welcome to site b.');
ajax_on_site_a.jsp内容如下:
  <mce:script type="text/javascript"><!--
var xmlHttp;
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
xmlHttp.onreadystatechange=callbackFunc;
xmlHttp.open("post","http://www.b.com:8888/crossdomain/page_on_site_b.jsp",true);
xmlHttp.send(null);
function callbackFunc(){
if(xmlHttp.readystate==4 && xmlHttp.status==200){
alert("可以访问");
}
}
// --></mce:script>
    
二、ajax是不允许跨域访问的。
不同的浏览器在不同情况下表现不一样:
IE中,如果是本地html文件调用远端资源,不会提示任何信息,可以通过。
如果把文件放到网站中,输入http://localhost:8888/crossdomain/ajax_on_site_a.jsp会弹出对话框提示“该页正在访问其控制范围之外的信息。这可能导致安全风险。是否继续?”,点击“是”之后可以正确执行。
如果输入http://www.a.com:8888/crossdomain/ajax_on_site_a.jsp,IE会提示错误“没有权限”
在Firefox浏览器中,根本无法正常执行,会报异常:uncaught exception: Access to restricted URI denied (NS_ERROR_DOM_BAD_URI)
我们不能期待用户能为我们改变什么,只能在程序上面做文章。
三、script标签是可以跨域的。
编写script_on_site_a.jsp:
<mce:script src="http://www.b.com:8888/crossdomain/page_on_site_b.jsp" mce_src="http://www.b.com:8888/crossdomain/page_on_site_b.jsp"></mce:script> //用于引入其他站点资源。至于是js还是jsp无所谓。
<mce:script type="text/


相关文档:

AJAX和XMLHTTP原理

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术 ......

Ajax的无刷新分页

Ajax的无刷新分页
这里以两个文件进行代码显示一个是ajax分页实现的文件,另一个是分页类文件
文件1.ajax_page.php
<script type="text/javascript" language="javascript">
 function createXMLHttp()
 {
  var browser=navigator.appName; //get the current browser
   ......

使用Javascript,CSS和Ajax创建ASP.NET自定义控件

在Visual Studio中,所有的ASP.NET 2.0控件都是自定义控件,创建自己的自定义控件一般需要完成以下三步。
(1)在站点APP_Code下创建一个新类;
(2)修改这个类,让它成为WebControl类(包含在System.Web.UI.WebControls命名空间)的派生类;
(3)重写基类(即WebControl类)的RenderContents()方法。
下面是一个最简单的ASP.NE ......

Spring MVC+Ajax创建实例


Java代码
@Override  
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object cmd,   
        BindException ex) {   
   &nb ......

经典Ajax调用

  function delDepart(){
      if(confirm("要删除部门必须删除该部门与员工的关系以及其所有下属部门")){
      var departId=form1.departId.value;//部门ID
      var url = "Depart/DelDepart.aspx?DepartId="+departId;
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号