首页澳门新葡亰官方网站 › 澳门新葡亰官方网站创设不了XMLHTTP控件

澳门新葡亰官方网站创设不了XMLHTTP控件

由于微软最近有推出了IE8.0,和不久推出的7.0,而现在市面上的书籍几乎没有考虑到7.0和8.0的情况。而7.0和8.0中的xmlhttprequest对象又和旧版本的不一样。它们两个已经对xmlhttprequest对象开始支持了。
 
             eg:
var xmlHttp
= null;
if (window.XMLHttpRequest) {
  // If IE7, Mozilla, Safari, and so on: Use native object
  xmlHttp = new XMLHttpRequest();
}
else
{
  if (window.ActiveXObject) {
     // ...otherwise, use the ActiveX control for IE5.x and IE6
     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
澳门新葡亰登录,  }
}
虽然这样是可以在IE7.0中建立xmlhttprequest对象的,但是ie7.0中的xmlhttprequest对象并不支持对本地资源的访问。所以在这样做还是有缺陷的……
所以可以考虑这样:

最近在用ajax开发服务器程序,发现IE浏览器不支持xmlhttprequest对象,而且找不到Microsoft.XMLHTTP控件。

var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new
ActiveXObject('Microsoft.XMLHTTP'); //创建XMLHTTP对象,考虑兼容性

我每次创建一个对象,都要这样复杂吗?如下代码:
JScript code:
"testAjax.htm" 文件:

                 if(window.ActiveXObject){
                    xmlhttp = new
ActiveXObject("Microsoft.XMLHTTP");       //ie的新版本
                }
                else if(window.ActiveXObject){
                    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
                }
                else if(window.ActiveXObject){
                   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                else if(window.XMLHttpRequest){
                   xmlhttp = new XMLHttpRequest();
                }

问题出现了我们需要解决,解决方案如下:

            xmlhttp.open("POST", "AJAXTest.ashx?" + "i=5&j=10", true);
//“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题)。这里还没有发出请求

复制代码 代码如下:

 

1、运行下regsvr32 msxml3.dll;
2、用现成的框架来做ajax;
3、代码优化:

            xmlhttp.onreadystatechange = function ()

<html>
  <body>
  <script type="text/javascript">
  function ajaxFunction()
  {
  var xmlHttp;
  try
  {
  // Firefox,Opera 8.0+,Safari
  xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
  // Internet Explorer
  try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e)
  {
  try
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch (e)
  {
  alert("您的浏览器不支持AJAX!");
  return false;
  }
  }
  }
  }
  </script>
  <form name="myForm">
  用户: <input type="text" name="username" />
  时间: <input type="text" name="time" />
  </form></body>
  </html>

 

if(window.ActiveXObject)
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if(window.XMLHttpRequest)
    {
        xmlHttp = new XMLHttpRequest();
    }

            {

首先声明一个保存 XMLHttpRequest 对象的 xmlHttp 变量。
然后使用 XMLHttp=new XMLHttpRequest() 来创建此对象。这条语句针对
Firefox、Opera 以及 Safari 浏览器。假如失败,则尝试针对 Internet
Explorer 6.0+ 的 xmlHttp=new
ActiveXObject(“Msxml2.XMLHTTP”),假如也不成功,则尝试针对 Internet
Explorer 5.5+ 的 xmlHttp=new ActiveXObject(“Microsoft.XMLHTTP”)。

————————————————————

    if(handle_澳门新葡亰娱乐官网,s == null)
        handle_s = "bin/normal.py/db";
    this.xmlHttp.onreadystatechange = handle_l;
    this.xmlHttp.open("GET",handle_s,true);
    this.xmlHttp.send(null);

                if (xmlhttp.readyState == 4) //readyState == 4
表示服务器返回完成数据了。之前可能会经历2(请求已发送,正在处理中)、3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成)

假如这三种方法都不起作用,那么这个用户所使用的浏览器已经太过时了,他或她会看到一个声明此浏览器不支持
AJAX 的提示。

编程少年基地

或判断浏览器

                {

澳门新葡亰官方网站,可以不用这么麻烦,直接可以把这个函数的定义单独保存为一个js文件,在需要使用AJAX的页面中引用这个文件就可以了。
如下面详解的例子:
JScript code:

http://www.bcsnjd.cn

var agt = navigator.userAgent.toLowerCase();
var is_ie = (agt.indexOf("msie") != -1);
var is_ie5 = (agt.indexOf("msie 5") != -1);
var is_opera = (agt.indexOf("opera") != -1);
var is_mac = (agt.indexOf("mac") != -1);
var is_gecko = (agt.indexOf("gecko") != -1);
var is_safari = (agt.indexOf("safari") != -1);

                    if (xmlhttp.status == 200) //如果状态码为200则是成功

复制代码 代码如下:

提供代码测试、视频培训等功能

function CreateXmlHttpReq(handler) {

                    {

function CreateHTTPObject()
{
var xmlhttp;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
{
try
{
xmlhttp = new XMLHttpRequest();
}
catch (e)
{
xmlhttp=false;
}
}
if (!xmlhttp && window.createRequest)
{
try
{
xmlhttp = window.createRequest();
}
catch (e)
{
xmlhttp=false;
}
}
return xmlhttp;

最新推出:

var xmlhttp = null;
if (is_ie) {
// Guaranteed to be ie5 or ie6
var control = (is_ie5) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP";

                        alert(xmlhttp.responseText);

}定义上面的函数,调用时创建实例即可,如下:
JScript code:

 

try {
xmlhttp = new ActiveXObject(control);
xmlhttp.onreadystatechange = handler;
} catch (ex) {
// TODO: better help message
alert("You need to enable active scripting and activeX controls");
}

                    }

复制代码 代码如下:

ASP.NET快速入门系列视频讲座

} else {

                    else

var xmlHttp = CreateHTTPObject();
if (!xmlHttp)
{
return; //无法创建 xmlhttp 对象
}
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = function(){HandleRequest(xmlHttp,
"元素ID")};
xmlHttp.send(null);

 

// Mozilla
xmlhttp = new XMLHttpRequest();
xmlhttp.onload = handler;
xmlhttp.onerror = handler;

                    {

也可以直接用jquery ,一句话搞定,如下代码:

张孝祥java视频系列教程

}

                        alert("AJAX服务器返回错误!");

复制代码 代码如下:

 

return xmlhttp;
}

                    }

$(document).ready(function(){
$("#userpass").blur(function(){
var password=$("#userpass").val();
var name=$("#username").val();
if(password==""||password==null){
$("#pass").html("<font color='red'>请输入密码! </font>");
b=false;
}else if(!/^[a-zA-Z0-9_]{6,16}$/.test(password)){
$("#pass").html("<font
color='red'>输入格式不正确!密码应至少6为数字或字符 </font>");
b=false;
}else{
$.get("LoginAjaxPassword",{"userpass":encodeURI(encodeURI(password)),"username":encodeURI(encodeURI(name))},function(response){
$("#pass").html(response);
if(response=="<font color='green' size='2'
>"+"√"+"</font>"){
b=true;
}
});
}
return b;
});
$("#login-submit").click(function(){
var autologin=document.getElementById("autologin").checked;
if(a&&b){
//if($("#autologin").attr("checked")==true){
if(autologin==true){
//${"#login-user-form"}.attr("action","AutoLogin");
//$("#login-user-form").submit();
document.form.action="AutoLogin";
document.form.submit();
}else{
//${"#login-user-form"}.attr("action","Login");
//$("#login-user-form").submit();
document.form.action="Login";
document.form.submit();
}
} else{}
});
});
</script>

更多的教程不用下载直接在线观看

或者

                }

:
JScript code: "testAjax.htm" 文件: 复制代码 代码如下: html body script
type="text/javascript" functio...

<script language="javascript">
    var http_request = false;
    function send_request(url) {//初始化、指定处理函数、发送请求的函数
        http_request = false;
        //开始初始化XMLHttpRequest对象
        if(window.XMLHttpRequest) { //Mozilla 浏览器
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {//设置MiME类别
                http_request.overrideMimeType('text/xml');
            }
        }
        else if (window.ActiveXObject) { // IE浏览器
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
        if (!http_request) { // 异常,创建对象实例失败
            window.alert("不能创建XMLHttpRequest对象实例.");
            return false;
        }
        http_request.onreadystatechange = processRequest;
        // 确定发送请求的方式和URL以及是否同步执行下段代码
        http_request.open("GET", url, true);
        http_request.send(null);
    }
    // 处理返回信息的函数
    function processRequest() {
        if (http_request.readyState == 4) { // 判断对象状态
            if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
                var returnObj = http_request.responseXML;
                var xmlobj = http_request.responseXML;
                var employees = xmlobj.getElementsByTagName("employee");
                var feedbackStr = "";
                for(var i=0;i<employees.length;i++) { // 循环读取employees.xml的内容
                    var employee = employees[i];
                    feedbackStr += "员工:" + employee.getAttribute("name");//取得标签指定属性
                    feedbackStr += " 职位:" + employee.getElementsByTagName("job")[0].firstChild.data;//取得指定标签的最初数据
                    feedbackStr += " 工资:" + employee.getElementsByTagName("salary")[0].firstChild.data;
                    feedbackStr +=  "rn";
                }
                alert(feedbackStr);
            } else { //页面不正常
                alert("您所请求的页面有异常。");
            }
        }
    }
</script>

            }

//不要以为if (xmlhttp.readyState == 4) {在send之前执行!!!!

            xmlhttp.send(); //这时才开始发送请求

//发出请求后不等服务器返回数据,就继续向下执行,所以不会阻塞,界面就不卡了,这就是AJAX中“A”的含义“异步”。试着在ashx加一句Thread.Sleep(3000);

简单的ajax封装:

 function ajax(url,onsuccess,onfail)

        {

            var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() :
new ActiveXObject('Microsoft.XMLHTTP');

转载本站文章请注明出处:澳门新葡亰官方网站 http://www.radioritmo-bl.com/?p=1292

上一篇:

下一篇:

相关文章