Cordova Android emulator应用程序未调用RESTful php服务器的http POST方法?

Cordova Android emulator应用程序未调用RESTful php服务器的http POST方法?,android,cordova,phonegap-build,hybrid-mobile-app,Android,Cordova,Phonegap Build,Hybrid Mobile App,我正在Ubuntu 14上使用cordova开发android应用程序。它是一款混合应用程序,包括:- 服务器-使用Php和slim框架的RESTful api& 客户端-主干网,带有requirejs、jquery、bootstrap等、HTML、CSS 我已经按照Apache Cordova Documentation guide()中给出的步骤创建了该应用程序,并在android studio中导入了该应用程序。我正在使用android studio 1.3 我已使用(10.0.2.2)将

我正在Ubuntu 14上使用cordova开发android应用程序。它是一款混合应用程序,包括:- 服务器-使用Php和slim框架的RESTful api&
客户端-主干网,带有requirejs、jquery、bootstrap等、HTML、CSS

我已经按照Apache Cordova Documentation guide()中给出的步骤创建了该应用程序,并在android studio中导入了该应用程序。我正在使用android studio 1.3

我已使用(10.0.2.2)将应用程序连接到本地主机,该应用程序在模拟器上运行,并显示“登录”屏幕

问题是,在填写用户名和密码后,当我单击“登录”时,它会像在浏览器应用程序中一样触发http“POST”。但是它不会触发POST,作为回报,我在Backbone.sync-error中得到404错误,当我看到服务器HTTP_方法时,它显示“get”

我已重写Backbone.sync方法

这是我触发事件的'login.js'文件

//sigin button click code ...
// ...
signinInfo.set({
email: email,
password: password     
});
signinInfo.save(null,{
success: function (data) {    
    window.localStorage.setItem('uid',signinInfo.attributes.uid);             
window.localStorage.setItem('email_id',signinInfo.attributes.email_id);
// redirect the user to the given route                    
if (data.attributes.status == "1") {                         
    window.location.href = "";                         
} else {
    alert("Incorrect password!");                       
}
}   // success
});
上述“signinInfo”模型上的“save”会触发Backbone.sync方法。下面是models.js中覆盖“Backbone.sync”方法的代码片段:

originalSync = Backbone.sync;
Backbone.sync = function (method, model, options) {
    var success = options.success;
    var error = options.error;        
    console.log("Models.js- method: " + method + ", model: " + JSON.stringify(model) + ", options: " + JSON.stringify(options));

    options.success = function (model, response, options) {
        console.log("Models.js- success, response: " +response );
        $('.srLoading').hide();
        if (typeof model.redirect == 'undefined') {
            success(model, response, options);
        } else {
            window.location.replace("/");
        }
    };
    options.error = function (model, response, options) {
        console.log("Models.js- error:" +JSON.stringify(model) + " response: " + response + "; options: " + JSON.stringify(options));
        $('.srLoading').hide();
        error(model, response, options);
    };
  // I have tried to put options for crossDomain here, but its not working
    options = options || (options = {});

    if (!options.crossDomain) {
        options.crossDomain = true;
    }

    if (!options.xhrFields) {
        options.xhrFields = {withCredentials:true};
    }
    if (method === "read") {
        console.log("Models.js- read method!" );
        $('.srLoading').show();
        options.dataType = "jsonp";
        return originalSync.apply(Backbone, arguments);
    }

    if (method === "create") {
        console.log("Models.js- create method!" );
        $('.srLoading').show();
        options.dataType = "jsonp";

        options.contentType = 'application/json';
        options.type = 'POST';
        //options.data = JSON.stringify(options.data);

        return originalSync.apply(Backbone, arguments);
    }

    if (method === "update") {
        $('.srLoading').show();
        options.dataType = "jsonp";
        return originalSync.apply(Backbone, arguments);
    }
    if (method === "delete") {
        $('.srLoading').show();
        options.dataType = "jsonp";
        return originalSync.apply(Backbone, arguments);
    }
}; //Backbone.sync

上面,调用了方法“create”,但在服务器上它不会转换为“POST”请求。相反,$\u服务器['REQUEST\u METHOD']显示'GET'!:(

在我的Backbone.sync方法中,我对[options.dataType=“jsonp”]进行了注释,因此代码如下所示:

...
if (method === "create") {
    console.log("Models.js- create method!" );
    $('.srLoading').show();
    //options.dataType = "jsonp";
    options.contentType = 'application/json';
    return originalSync.apply(Backbone, arguments);
}
现在我的登录向服务器发送HTTP POST请求


在跨域(CORS)上,数据类型为“jsonp”的主干只能发出“GET”请求。因此,要执行其他操作,我们需要发送“json”数据。

发布应该发出请求的代码片段。