日期:2014-05-16  浏览次数:20882 次

用jquery ajax调用远程方法,在IE中成功,在firefox和chrome中失败,求解。
在IE中运行没有问题,调用了远程方法后,程序进入了jquery ajax 的success代码块中。

用firefox和chrome执行的时候,程序没有调用远程的方法,并且程序进入了jquery ajax的error代码块中,打印出来了错误消息:
XMLHttpRequest.state:function (){return e}
XMLHttpRequest.readyState:0
textStatus:error
XMLHttpRequest.responseText:undefined

在网上查了下,XMLHttpRequest.readyState:0 的意思是(未初始化)还没有调用send()方法。这是为什么呢?说明ajax的请求根本就没有发送出去?



$('#callwebserviceId').click(function() {
  
$.ajax({  
url: 'http://localhost:9081/xxx/RetriveHelloWordService?wsdl/sayHello',
        type: 'post',
dataType: 'xml',
data: populateXML(),//此js方法返回一个完整的xml,作为参数传入远程方法
        contentType: 'text/xml;charset="utf-8"', 

                success:function(zz){         
                    alert("success la:");
alert("result1:"+$(zz).text());
                },
error: function(XMLHttpRequest, textStatus) {
alert("error la");
                        alert("XMLHttpRequest.state:"+XMLHttpRequest.state+"-XMLHttpRequest.readyState:"+XMLHttpRequest.readyState+"-textStatus:"+textStatus+"-XMLHttpRequest.responseText:"+XMLHttpRequest.responseText);
                }
});
    });


------解决方案--------------------
http://localhost:9081/

跨域了吧,firefox下端口不一样也算跨域
------解决方案--------------------
楼上正解,可以将服务程序发布之后试试
------解决方案--------------------
ie能请求是楼主没有搭建服务器来访问吧,直接拖进浏览器或者双击运行,这样ie可以跨域,通过http访问就不行了

可以用jsonp来操作,前提是你要配置好跨域页面的请求方法