[英]PhoneGap ajax not working
我正在使用file://协议开发phoneGap应用。 使用ajax时,我一直收到此错误。 我的服务器页面上有标头(“ Access-Control-Allow-Origin:*”)。 但是,无论我做什么,都无法得到ajax响应。 我该怎么办?
无法加载文件:/// C:/test4/www/trackmyrunning.byethost22.com:仅协议方案支持跨源请求:http,数据,chrome,chrome扩展名,https。
$("#b").on('click',function(){
//pull vars
var username = $('#username').val();
var password = $('#password').val();
$.ajax({
url: "trackmyrunning.byethost22.com",
type: 'POST',
success: function(data)
{
$("#loginMessage").html(data);
},
error: function(xhr, status,error)
{
alert(xhr.status + status + error);
}
});
//request for username
/* $.get("trackmyrunning.byethost22.com/index.", {user:username,pass:password}).done(function(data){
$("#loginMessage").html(data);
}); */
});
我也有。 我尝试将其修改为,但没有运气。 我在警报中收到的错误消息是0错误,基本上是访问被拒绝做来越过原点。
使用手机差距和春季网络服务开发移动应用程序时,我遇到相同的问题。
请记住,您必须传递此处缺少的用户名和密码凭据
然后设置标题
Access-Control-Allow-Origin标头是必须在服务器端设置的响应标头。 也就是说,如果相应的服务器未发送此标头,则由于跨服务器(域,子域和协议)的侵害,浏览器将阻止您向该服务器请求信息。
仅当原始页面由同一服务器(域,子域和协议)提供服务时,它才允许请求。
Modify your js file like this ,
$("#b").on('click',function(){
//pull vars
var username = $('#username').val();
var password = $('#password').val();
$.ajax({
url: "trackmyrunning.byethost22.com",
type: 'POST',
data: { username : username , password : password } ,
headers: {
'Access-Control-Allow-Origin': '*'
},
crossDomain: true,
success: function(data)
{
$("#loginMessage").html(data);
},
error: function(xhr, status,error)
{
alert(xhr.status + status + error);
}
});
});
如果问题仍然存在,则必须修改服务器端代码。
您可以按照以下方式在java响应(java后端)中设置标头,
try
{
res.setContentType("application/json");
res.addHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "*");
res.setHeader("Access-Control-Allow-Headers", "X-Requested- With,Host,User-Agent,Accept,Accept-Language,Accept-Encoding,Accept-Charset,Keep-Alive,Connection,Referer,Origin");
res.setHeader("Access-Control-Max-Age", "8080");
res.setCharacterEncoding("utf-8");
res.getWriter().write(response);
}
catch (IOException e)
{
}
按照以下方式,您可以在php(后端php)中设置标头,
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token , Authorization');
您缺少的是URL的方案,而在Phonegap应用程序中,如果没有为URL提供任何方案,则使用默认方案( file:/
/)。
更改您的网址以包含http://
或https://
(根据您的配置)
例:
url: "http://trackmyrunning.byethost22.com"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.