英特尔 XDK HTML5 应用程序:http 请求总是 returns 0
Intel XDK HTML5 App: http request always returns 0
我正在开发一个需要从服务器获取数据的 HTML5 应用程序。为此,我需要使用 Javascript,请参见下面的代码。但无论我做什么,它总是 returns 0。它应该使用下面的代码,return 403 正确 url,或 404 错误 url,它都没有。容器应用程序应允许跨站点脚本。我在英特尔应用程序预览中有应用程序 运行。 Windows 10 / Android 5.1.1 索尼 Experia Z1 Compact。
我要它做的是:连接服务器,给服务器正确的用户名;密码,return一个数据包,在App中使用
测试了这些:
- Wifi 可用
- 互联网连接也是如此
- jQuery 下面的版本。
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://pageiuse.com", true);
xhr.onload = function(){
if (xhr.readyState == 4) {
if(xhr.status == 200) {
var json_string = xhr.responseText;
var json = JSON.parse(json_string);
toastMessage("Succes!");
} else if(xhr.status == 404) {
toastMessage("404!");
} else {
toastMessage("Error!!! " + xhr.status);
}
} else {
toastMessage("readyState " + xhr.readyState);
}};
xhr.send(null);
欢迎所有帮助,或有关如何调试的建议。
*更新,当我使用 xhr.responseText
时有数据返回,但 xhr.status
保持为 0。一直在研究 "Cordova Whitelisting",但目前没有任何好转。
我是这样解决的:
@xmnboy 将 link 提供给:use jQuery 2
这是我使用的代码:
$.ajax(
{
type: "GET",
crossDomain: true, //;paf; see
url: "http://www.serverexample.com",
async: true,
dataType: "arraybuffer", // that is what I have incoming.
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "basic username:password");
}
})
.always(function (retorno, textStatus, jqXHR) { //;paf; see
//toastMessage("jQuery version: " + $.fn.jquery + "\n retorno:" + retorno.status + "\n textStatus:" + textStatus + "\n jqXHR:" + jqXHR.status) ;
var returnStatus = jqXHR.status ;
if (returnStatus === undefined) {
returnStatus = retorno.status;
}
switch (returnStatus) {
case 0:
console.log("0 == exit oke", "Here") ;
case 200:
console.log("200 == exit oke", "Here") ;
break;
case 404:
console.log("404 == exit by fail", "Here") ;
break;
default:
console.log("default switch happened") ;
console.log(JSON.stringify(jqXHR.responseJSON));
break ;
}
});
我正在开发一个需要从服务器获取数据的 HTML5 应用程序。为此,我需要使用 Javascript,请参见下面的代码。但无论我做什么,它总是 returns 0。它应该使用下面的代码,return 403 正确 url,或 404 错误 url,它都没有。容器应用程序应允许跨站点脚本。我在英特尔应用程序预览中有应用程序 运行。 Windows 10 / Android 5.1.1 索尼 Experia Z1 Compact。
我要它做的是:连接服务器,给服务器正确的用户名;密码,return一个数据包,在App中使用
测试了这些:
- Wifi 可用
- 互联网连接也是如此
- jQuery 下面的版本。
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://pageiuse.com", true);
xhr.onload = function(){
if (xhr.readyState == 4) {
if(xhr.status == 200) {
var json_string = xhr.responseText;
var json = JSON.parse(json_string);
toastMessage("Succes!");
} else if(xhr.status == 404) {
toastMessage("404!");
} else {
toastMessage("Error!!! " + xhr.status);
}
} else {
toastMessage("readyState " + xhr.readyState);
}};
xhr.send(null);
欢迎所有帮助,或有关如何调试的建议。
*更新,当我使用 xhr.responseText
时有数据返回,但 xhr.status
保持为 0。一直在研究 "Cordova Whitelisting",但目前没有任何好转。
我是这样解决的:
@xmnboy 将 link 提供给:use jQuery 2
这是我使用的代码:
$.ajax(
{
type: "GET",
crossDomain: true, //;paf; see
url: "http://www.serverexample.com",
async: true,
dataType: "arraybuffer", // that is what I have incoming.
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "basic username:password");
}
})
.always(function (retorno, textStatus, jqXHR) { //;paf; see
//toastMessage("jQuery version: " + $.fn.jquery + "\n retorno:" + retorno.status + "\n textStatus:" + textStatus + "\n jqXHR:" + jqXHR.status) ;
var returnStatus = jqXHR.status ;
if (returnStatus === undefined) {
returnStatus = retorno.status;
}
switch (returnStatus) {
case 0:
console.log("0 == exit oke", "Here") ;
case 200:
console.log("200 == exit oke", "Here") ;
break;
case 404:
console.log("404 == exit by fail", "Here") ;
break;
default:
console.log("default switch happened") ;
console.log(JSON.stringify(jqXHR.responseJSON));
break ;
}
});