我正在尝试使用 Sencha(无 Phonegap)编写一个本机 android 应用程序,该应用程序能够通过 get/post 请求联系服务器。我已经得到了可以在浏览器中运行的代码,但是当我将应用程序打包成 .apk 并在模拟器上运行时(我已经更新了它的 hosts 文件以包含我的测试服务器的 ip),ajax请求失败,状态码为 0。
我不确定这是否仍然是跨域的事情?我听说使用 jsonp 代替会起作用,但是由于 jsonp 不支持发布请求,因此即使对于将要更新/添加到数据库的请求,使用 jsonp 是否合适?我听到的另一个建议是添加 PhoneGap。这些真的是唯一的选择吗?
Ext.Ajax.request({
url: App.config.Config.getRemoteHost() + '/users/login.json',
method: 'POST',
useDefaultXhrHeader : false,
params: {
'data[User][email]': values.email,
'data[User][password]': values.password
},
success: function(response) {
loginForm.setMasked(false);
var response = Ext.util.JSON.decode(response.responseText)
if(response.success) {
//Save session for later.
this.session = response.session;
localStorage.setItem('session', this.session);
//Display main view.
Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);
Ext.Viewport.add(Ext.create('App.view.Main'));
Ext.Msg.alert('Logged In', 'Login successful.');
} else {
Ext.Msg.alert('Login Failed', response.error);
}
},
failure: function(response) {
console.log(response.status); //This is 0 on the native app.
loginForm.setMasked(false);
Ext.Msg.alert('Error', 'There was a problem logging in.');
}
});