Android webapp Ajax异常`INVALID_STATE_ERR:DOM异常11`

时间:2013-06-05 07:48:08

标签: android ajax web-applications

这是我关于堆栈溢出的第一篇文章,所以我会尽量尊重约定并尽可能清楚。

简介:

对于这个项目,我正在尝试使用本地Web服务器进行Web应用程序。我的项目分为两部分:

  1. 向真实Web服务器发送请求的本地Web服务器(这是解决同源策略的解决方案)
  2. 一个Android网络应用程序,它是视图。这就是问题发生的地方。
  3. 当我尝试使用ajax请求与服务器通信时,发生了错误INVALID_STATE_ERR: DOM Exception 11。但是,当我在firefox(使用Apache)上进行操作时,我没有这个问题。

    本地Web服务器:

    Web服务器仅在Web应用程序和Web服务器之间存储或传输数据。

    Webapp:

    初始化

    在我的Android活动中,我正在启动我的网络应用程序:

     webview = new WebView(this);
    
     MyJavaScriptInterface myJavaScriptInterface = new MyJavaScriptInterface(this);
     webview.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
    
     // set settings
     webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
     webview.getSettings().setJavaScriptEnabled(true);
     webview.getSettings().setAppCacheEnabled(false);
     webview.setHorizontalScrollBarEnabled(false);
     webview.setVerticalScrollBarEnabled(false);
     if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) // 16
     {
    // yourwebview, i use phonegap here
       webview.getSettings().setAllowUniversalAccessFromFileURLs(true);
        webview.getSettings().setAllowFileAccessFromFileURLs(true);
        }
    
        // start
        uri = new URI("http://127.0.0.1:"+LocalServer.RECORDING_PORT+"/index.html");
        webview.loadUrl(uri.toString());
    

    的Ajax

    要在我的网络应用中保存数据,我正在做一个基本的XMLHttpRequest(也尝试使用JQuery,但没有消息出来)

    function saveObject(in_strAction, in_oData, fctCallback)
    {
    
        var l_strURL = 'http://127.0.0.1:8888/api/' + in_strAction;
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=function()
        {
            try // line 46
            {
                console.log ("xmlhttp.readyState="+xmlhttp.readyState+" && xmlhttp.status="+xmlhttp.status);
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    fctCallback(xmlhttp.responseText);
                }
            }
        }
    
        xmlhttp.open("POST",l_strURL,true);
        xmlhttp.send();
    }
    

    响应

    Web应用程序收到的答案是json,标题是由Web服务器创建的。

1 个答案:

答案 0 :(得分:0)

问题解决了

在读取无效状态时异常INVALID_STATE_ERR: DOM Exception 11已启动:

function saveObject(in_strAction, in_oData, fctCallback)
{

    var l_strURL = 'http://127.0.0.1:8888/api/' + in_strAction;
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function()
    {
        try
        {
            // Don't read status here (on state 1 exception will be up)
            console.log ("xmlhttp.readyState="+xmlhttp.readyState);
            if (xmlhttp.readyState==4)
            {
                // Status can be read here.
                console.log ("xmlhttp.status="+xmlhttp.status);
                if (xmlhttp.status==200)
                {
                    fctCallback(xmlhttp.responseText);
                }
            }
        }
    }

    xmlhttp.open("POST",l_strURL,true);
    xmlhttp.send();
}