0

JavaScript で複数の関数を呼び出して、ユーザー名/メールアドレス/パスワードを取得します。すべて問題がなければ、goForLogin() に移動し、chrildbrowser を開きます。エラーが発生します(以下を参照):

最初に私のコード:

        function goForLogin(emailaddress, value){
            var xmlhttp;
            xmlhttp=new XMLHttpRequest();
            xmlhttp.open("POST","http://dev.server.com/test/login",true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send("email=" + emailaddress + "&password=" + value);

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.status==200)
                {

                    value = null;
                    window.plugins.childBrowser.showWebPage('http://dev.server.com');
                } else {
                    alert("FAILED");
                }
            }
        }

* キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'アプリケーションがアクティブなコントローラーをモーダルに提示しようとしました。* First throw call stack: (0x154012 0x25fce7e 0x478721 0x479777 0x4797b7 0x6a68 0x67471 0x66c5e 0x67039 0x26106b0 0x1198035 0xd7f3f 0xd796f 0xfa734 0xf9f44 0xf9e1b 0x33be7e3 0x33be668 0x38f65c 0x2366 0x2295) libc++abi.dylib: terminate called throwing an exception (lldb)

最新の Cordova および Childbrowser、Xcode 4.4 バージョン。

4

1 に答える 1

2

わかった!ステートメントのためxmlhttp.onreadystatechange、このスクリプトでは childBrowser が 3 回開かれます。Apple では許可されていません。申し訳ありませんが、理由を忘れてしまったので、電話をかけ直しました。次のようになります。

私のJavaScript:

function some_function2(url, callback) {
      var httpRequest; // create our XMLHttpRequest object
      if (window.XMLHttpRequest) {
          httpRequest = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
          // Internet Explorer is stupid
          httpRequest = new
          ActiveXObject("Microsoft.XMLHTTP");
      }
      httpRequest.onreadystatechange = function() {

          // inline function to check the status
          // of our request
          // this is called on every state change
          if (httpRequest.readyState === 4 &&
             httpRequest.status === 200) {
             callback.call(httpRequest.responseXML);
             // call the callback function
         }
      };
      httpRequest.open('POST', url, true);
      httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
      httpRequest.send("email=test@test.com&password=1");
      }


function call() {
   // call the function
   some_function2("http://dev.server.com/account/login/", function() {
                 console.log(this);
                 callChildBrowser();
                 });
                 console.log("this will run before the above callback");

}


function callChildBrowser(){
    window.plugins.childBrowser.showWebPage('http://dev.server.com');
    }

最後に私のhtmlで:

<button id="butten" onclick="call()">WORKS</button>
于 2012-10-31T01:08:02.827 に答える