【问题标题】:How to fetch web service data in Mozilla Firefox?如何在 Mozilla Firefox 中获取 Web 服务数据?
【发布时间】:2012-03-06 03:20:29
【问题描述】:

我正在做一个 HTML 项目,只有 JavaScript。 我有一个从 Web 服务(.asmx)获取数据的功能,它工作正常。但在 Firefox 中,Chrome 无法正常工作。这是代码,请验证:

function CreateXMLHttpRequest()
{
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}   

function CallWebService() {


    var objXMLHttpRequest = CreateXMLHttpRequest();
    objXMLHttpRequest.open ("POST", 
                            "http://www.xxxxxxxxx.com/WebServicesp/WebMethods.asmx", 
                            false);
    objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    var packet='<?xml version="1.0" encoding="utf-8"?> 
                <soap:Envelope  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body></soap:Body></soap:Envelope>';

    objXMLHttpRequest.send(packet);
    var res=objXMLHttpRequest.responseText;

    alert(res);   
}

【问题讨论】:

  • “不工作”是什么意思?你得到什么错误?
  • 使用 Firebug 之类的工具,观察 http 响应。

标签: javascript html web-services firefox google-chrome


【解决方案1】:

试试这个代码:

function CallService() {

jQuery.support.cors = true;
    $.ajax({
        type: "POST",
        url: "url/Service1.asmx/servicename",
        dataType: "json",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        success: OnSuccess,
        error: OnError
    });


}
function OnSuccess(data, status) {
alert("success");

    alert(data.d);


}

function OnError(request, status, error) {


    alert(status);
}

$(document).ready(function () {
    CallService();
});

【讨论】:

    【解决方案2】:

    您可能会收到关于 跨域 ajax 请求 的 js 错误,在这种情况下,它可以在 Internet Explorer 中正常工作,但在其他浏览器上则不能,因为 IE 不强制执行跨域安全策略。 这将帮助您了解跨域,Cross-domain error
    如果是这种情况,您需要使用 tr JSONP 或 curl 来获取数据。
    希望能帮助到你
    你能从 firebug 控制台发布错误消息吗?

    【讨论】:

    • 在 chrome.. 尝试右键单击您的页面 -> 检查元素。在控制台选项卡中查找任何消息
    • @austin:“IE 不强制执行跨域安全策略”——你为什么会这样认为?
    【解决方案3】:

    html 页面是否与 web 服务的端点 url 来自同一域?如果不是,那么它就是其他人在此处指出的跨域违规问题。检查任何 javascript 错误。

    【讨论】:

      【解决方案4】:

      我会尝试安装名为 tamper data 的插件 https://addons.mozilla.org/en-US/firefox/addon/tamper-data/?src=search

      或名为 fiddler 的软件 http://fiddler2.com/fiddler2/

      这些将向您显示实际的请求和响应,因此您将能够在实际请求中找到问题(如果有)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多