2012-10-30 183 views
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版本。

回答

2

我明白了!由于xmlhttp.onreadystatechange声明,childBrowser将在此脚本中打开三次。这是不允许的苹果 - 对不起,我忘了为什么 - 所以我打了个电话。它看起来像这样:

我的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 protected]&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>