Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有Ajax请求的Sencha 2.0本机应用程序_Android_Ajax_Extjs_Sencha 2 - Fatal编程技术网

Android 带有Ajax请求的Sencha 2.0本机应用程序

Android 带有Ajax请求的Sencha 2.0本机应用程序,android,ajax,extjs,sencha-2,Android,Ajax,Extjs,Sencha 2,我正在尝试使用Sencha(无Phonegap)编写一个本机android应用程序,它能够通过get/post请求联系服务器。我已经将代码移植到浏览器中,但是当我将应用打包到.apk中并在模拟器上运行它时(我已经更新了它的hosts文件以包含测试服务器的ip),ajax请求失败,状态代码为0 我不确定这是否仍然是一个跨领域的事情?我听说改用jsonp是可行的,但既然jsonp不支持post请求,那么即使是更新/添加到数据库中的请求,也应该使用jsonp吗?我听到的另一个建议是添加PhoneGap

我正在尝试使用Sencha(无Phonegap)编写一个本机android应用程序,它能够通过get/post请求联系服务器。我已经将代码移植到浏览器中,但是当我将应用打包到.apk中并在模拟器上运行它时(我已经更新了它的hosts文件以包含测试服务器的ip),ajax请求失败,状态代码为0

我不确定这是否仍然是一个跨领域的事情?我听说改用jsonp是可行的,但既然jsonp不支持post请求,那么即使是更新/添加到数据库中的请求,也应该使用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.');
        }
    });

我发现另一个选择是不用ajax post,我可以直接提交表单作为post数据。即使在打包的应用程序中,此方法也似乎有效

 loginForm.submit({
        method: 'POST',
        scope: this,
        url: App.config.Config.getRemoteHost() + '/users/login.json',

         // Upon success, go to TabPanel
        success: function(form, response) {
            loginForm.setMasked(false);

            //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.');
        },

         // Upon failure, show an error message
        failure: function(form, response) {
            console.log(response);
            loginForm.setMasked(false);
            Ext.Msg.alert('Login Failed', response.error);
        }
    });