ajax请求的时候,IE出现拒绝访问的错误,同域名无跨域,调试了半天还是调试不出问题?
FF调试看到错误信息:
Error loading content (NS_ERROR_DOCUMENT_NOT_CACHED)
text/html (NS_ERROR_DOM_BAD_URI)
如果也遇到这种情况,实在想不出啥原因了的话,看看是不是http://和https://的互访。
ajax请求的时候,IE出现拒绝访问的错误,同域名无跨域,调试了半天还是调试不出问题?
FF调试看到错误信息:
Error loading content (NS_ERROR_DOCUMENT_NOT_CACHED)
text/html (NS_ERROR_DOM_BAD_URI)
如果也遇到这种情况,实在想不出啥原因了的话,看看是不是http://和https://的互访。
在看文章前,先指定一个变量xhr,xhr代表ajax对象。
测试浏览器:ie为ie6,firefox为2,其他的未测试。统称ie6为ie,firefox2为ff。
基本的============================================
1,最经典的就是ie下的缓存问题了。
如果使用的是get,那么在ie下出现缓存问题。导致代码只执行一次。解决办法就是加时间戳或者随机数,使url变为唯一,这样就不会出现ie
下的缓存问题了,或者改为post提交。
xhr.open("get","xxxx.aspx?_dc="+new Date().getTime(),true);
2,ajax对象属性的大小写问题
在w3c浏览器,如ff中,对大小写是敏感。如
if(xhr.readystate==4)这种写法,在ie下是成立的,但是在ff下就行不通了,因为ie不区分大小写,ff是区分大小的。
标准写法为if(xhr.readyState==4),同理还有属性 responseText,responseXML,status。
还有状态转换函数xhr.onreadystatechange,要注意全部为小写
1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中。
url (String) : 请求的HTML页的URL地址。
data (Map) : (可选参数) 发送至服务器的 key/value 数据。
callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。
这 个方法默认使用 GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。jQuery 1.2 中,可以指定选择符,来筛选载入的 HTML 文档,DOM 中将仅插入筛选出的 HTML 代码。语法形如 "url #some > selector"。
这个方法可以很方便的动态加载一些HTML文件,例如表单。
示例代码:
$(".ajax.load").load("http://www.cnblogs.com/QLeelulu/archive/2008/03/30/1130270.html .post",
function (responseText, textStatus, XMLHttpRequest){
this;//在这里this指向的是当前的DOM对象,即$(".ajax.load")[0]
//alert(responseText);//请求返回的内容
//alert(textStatus);//请求状态:success,error
index.jsp
---------------------------------------
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function onInvokeAction(){
$.post('url', {
text: 'my string',
number: 23
}, function(data) {
$('#presidents').html(data);
});
}
</script>