我正在使用html5构建一个移动网络应用程序,我正在从我的WCF休息服务中获取数据。问题是它在浏览器中工作正常,当使用Apache Cordova转换为应用程序时,它无法正常工作。
我得到http_request.readyState :4
和http_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>