我正在使用cordova开发一个Android应用程序,因此我还需要发生AJAX请求。我正在为请求使用jQuery,在更新index.php安全策略后,我将其连接到远程服务器。但现在我收到错误404 - 启动AJAX请求时找不到。 该错误可能与我POST到服务器的数据有关吗? 网址是正确的,我启用了白名单插件。
编辑:
function ajaxrequestlogin() {
var login_username=$("#username").val();
var login_password=$("#password").val();
var dataString="username="+login_username+"&password="+login_password;
$.ajax({
type: "POST",
url: "http://www.my-url.de/path/to/myapi.php",
data: dataString,
crossDomain: true,
cache: false,
beforeSend: function(){ $("#message").html('Verbinde...');},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);},
success: function(data){
if(data=="success") {
window.localStorage.setItem(loggedin, true);
window.localStorage.setItem(username, login_username);
window.localStorage.setItem(password, login_password);
alert("Erfolgreich eingeloggt als "+login_username);
}
else if(data=="wrong_userorpass") {
alert("Username und Passwort stimmen nicht überein!");
}
else if(data=="failed") {
alert("Ups! Ein Fehler ist aufgetreten. Bitte versuche es erneut.");
}
}
});
return false;
}
应用程序应将用户名和密码发送到服务器,该服务器验证凭据并使用
返回success或wrong_userorpassecho "success";
例如,。 我是否必须在API的PHP脚本中更改某些内容以使选项无缓存工作,或者它是否可以在没有任何干预的情况下正常工作?
答案 0 :(得分:8)
好的,经过几个小时的尝试,更改安全策略和config.xml后我终于解决了问题,所以我只是分享给你,因为我认为这是一个很常见的问题当尝试将Ajax与cordova应用程序一起使用时。
在尝试解决问题的同时,我读了10个论坛帖子,其中有人更新了他们的cordova,然后Ajax丢失了404错误。这些人的解决方案总是只安装cordova-plugin-whitelist
插件。对我来说(我下载了6.3版本)这个插件已经安装并激活,所以我没有理会这些答案。在今晚尝试了之后,我意识到我的脚本一切正常,它必须是一个特定于cordova的问题(我用浏览器版本的ajax请求测试了它)所以我只是输入
cordova plugin add cordova-plugin-whitelist
。
它已安装(即使插件已安装并处于活动状态),此后立即一切正常。
因此,即使您认为白名单插件不是问题:只需尝试再次安装它就可以正常工作。