AJAX发布请求在浏览器中工作,而不是在Phonegap App上

时间:2017-08-18 17:53:54

标签: javascript ios ajax cordova phonegap

当我在iOS10上使用Phonegap App测试时,一个简单的AJAX请求失败。

代码如下(在浏览器中完美运行):

if($.trim(firstname).length > 0 & $.trim(email).length > 0 & $.trim(password).length > 0) {

            console.log("input checked");

            $.support.cors = true;
            $.ajax({
                type: "POST",
                url: "http://my-server.com/signup.php",
                data: dataString,
                crossDomain: true,
                cache: false,

                beforeSend: function(data) {
                    console.log("connecting to server");
                },

                //display success/fail message - put something in data on server
                success: function(data, textString, xhr) {
                    if(data == "success") {
                        localStorage.login = "true";
                        localStorage.email = email;
                        mainView.router.loadPage("swipe.html");
                    } else if(data == 'exist') {
                        myApp.alert("Account already exists", "Login Failed");
                    }
                },

                error: function(xhr, ajaxOptions, errorThrown) {
                    console.log("error msg: ");
                    console.log(xhr);
                    console.log(errorThrown);
                    myApp.alert("Unknown error, please try again", "Login Failed");
                },

                complete: function(data) {
                    if(data.readyState == "0") {
                        console.log("unsent");
                    } else if(data.readyState == "4") {
                        console.log("done");
                    }   
                }

            });
        } return false;
    }

我的config.xml文件设置与之前的许多答案完全相同:

<plugin name="cordova-plugin-whitelist" />
<access origin="http://my-server.com" />

etc...

显然禁用Apple的App Transport Security是不可能的,因为我没有构建应用程序,只需在Phonegap服务器和Phonegap应用程序上测试它。

但这可能与ATS阻止来自Phonegap应用程序本身的其他域的Ajax请求有关吗?我想它会要求Phonegap允许访问所有域,这可能是应用商店不允许的!

这是我对发生的事情的最好猜测。任何想法或解决方法?

1 个答案:

答案 0 :(得分:0)

新ios应用程序的唯一互联网解决方案是移动后端到https ...