调用JSON和数据检索在浏览器中工作,但不在Cordova模拟器或移动设备中

时间:2015-05-07 11:16:35

标签: ajax json wcf

我正在使用html5构建一个移动网络应用程序,我正在从我的WCF休息服务中获取数据。问题是它在浏览器中工作正常,当使用Apache Cordova转换为应用程序时,它无法正常工作。

我得到http_request.readyState :4http_request.status :0而不是200.我认为这是跨域问题,所以使用ajax而不是Java函数并启用 CORS < / strong>在web.config的WCF中仍然存在问题

有人可以帮帮忙吗?

提前致谢

维克拉姆

PS:当使用ajax函数时,它会进入错误函数但显示错误消息成功:200,不要含义

$.ajax({
                dataType: 'jsonp',
                type: "GET",
                url: "http://dev_test_srv/RestServiceImpl.svc/json/123?callback=?",
                success: function (data) {
                    alert(123);
                    alert("working");
                },
                error: function (error) {
                    alert(error.statusText + "-" + error.status);
                }
});

var data_file = "http://dev_test_srv/RestServiceImpl.svc/Employees/" + id + "/" + pwd;
alert(data_file);

var http_request = new XMLHttpRequest();

try {
                // Opera 8.0+, Firefox, Chrome, Safari
                http_request = new XMLHttpRequest();
} catch (e) {
                // Internet Explorer Browsers
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {
                        // Something went wrong
                        alert("Your browser broke!");
                        return false;
                    }
                }
}

http_request.onreadystatechange = function () {
                alert(http_request.readyState + '--' + http_request.status);
                if (http_request.readyState == 4 && http_request.status == 200) {
                    var stringouptut = http_request.responseText;
                    var replacedstring = stringouptut.replace(/\\/g, "");
                    var newresult = "{ \"Data\": " + replacedstring.substring(replacedstring.indexOf("["));
                    var final = newresult.substring(0, newresult.length - 2) + " " + " }";

                    final = JSON.parse(final);

                    if (final.Data.length > 0) {

                        if (final.Data[0].status == "Valid") {

                            localStorage.UserId = id;

                            window.location = "doctors.html";
                        }
                        else {
                            document.getElementById("lblerror").innerHTML = "Invalid Employee ID/Password";
                        }

                    }
                }
            }
            http_request.open("GET", data_file, true);
            http_request.send();

web.config中配置设置:

<httpProtocol>
    <customHeaders> 
         <add name="Access-Control-Allow-Origin" value="*"/>
         <add name="Access-Control-Allow-Headers" value="Content-Type, Accept"/>
         <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS" />                             <add name="Access-Control-Max-Age" value="1728000" />
    </customHeaders> 
</httpProtocol>

0 个答案:

没有答案