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”而终止应用程序,原因:“应用程序试图以模态方式呈现活动控制器。” *第一掷调用堆栈:(0x154012 0x25fce7e 0x478721 0x479777 0x4797b7 0x6a68 0x67471 0x66c5e 0x67039 0x26106b0 0x1198035 0xd7f3f 0xd796f 0xfa734 0xf9f44 0xf9e1b 0x33be7e3 0x33be668 0x38f65c 0x2366 0x2295)的libc ++ abi.dylib:终止叫做抛出异常(LLDB)

最新的 Cordova 和 Childbrowser,Xcode 4.4 版本。

4

1 回答 1

2

我得到了它!由于该xmlhttp.onreadystatechange语句,childBrowser 将在此脚本中打开 3 次。苹果不允许 - 抱歉,我忘记了原因 - 所以我回电了。它看起来像这样:

我的 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 回答