代码之家  ›  专栏  ›  技术社区  ›  Ian Elliott

Firefox错误“未找到元素”

  •  21
  • Ian Elliott  · 技术社区  · 17 年前

    首先,这并不是设置页面的理想方式,但是需要将脚本作为一个文件分发。

    我用javascript在xhtml文档的顶部有一个php脚本,在某些情况下使用XHR将查询字符串发送到页面本身。顶部的php随后激活,并将传递的内容存储为会话,然后自杀(exit())。XHR是异步的,从不检查它是否返回内容。

    但是在Firefox3中,错误控制台会抛出一个错误 no element found exit('Done')

    有没有更好的方法来存储已经生成的xhtml页面中的会话?显然,我可以将XHR转换到另一个页面,但我更愿意将其全部保存在一个脚本中。Firefox是否将对self的XHR请求视为对DOM的更新?我不知道它为什么发送这个错误。


    使现代化 正如我所说,firefox只在发出XHR请求时才会显示错误。该页面是有效的XHTML,工作正常,没有错误,除非对页面本身发出XHR请求。

    我想知道为什么它会发送错误,因为它实际上没有返回任何东西。

    下面是一个javascript片段,它从一个对象发出ajax请求。

     var saveState = { saveContent: function(updateActiveMenu) {
        var sendState = new ajaxObject(gV.url);
        if (!updateActiveMenu) {
            var storageContainer = document.getElementById("StorageContainer").innerHTML;
            var menu = document.getElementById("Nav").innerHTML;
            sendState.update("Containerstring="+urlencode(storageContainer)+"&Nav="+urlencode(menu)+"&Active="+gV.activeMenuItem, 'POST', true);    } }, }
    

    php就是这样做的

    if (isset($_REQUEST['Containerstring']) && isset($_REQUEST['Nav']) && isset($_REQUEST['Active'])) {
      $_SESSION['Containerarray'] = (saveContainer(regulateEscapes(urldecode($_REQUEST['Containerstring']))));
      $_SESSION['Navarray'] = (saveNav(regulateEscapes(urldecode($_REQUEST['Nav']))));
      $_SESSION['Active'] = $_REQUEST['Active'];
      exit('Done'); 
    }
    

    我也知道我不应该使用innerHTML,但那是另一回事


    错误是这样的

    Error: no element found
    Source File: http://localhost/ajax.php?1244648094055 
    Line: 1
    

    请注意,在我使用的php页面上,错误引用了一个从未调用过的查询字符串。

    2 回复  |  直到 10 年前
        1
  •  25
  •   NickFitz    17 年前

    Firefox希望得到一些可以解析为XML的东西,并在得到空响应时抛出XML解析错误。

    在PHP调用“exit()”之前,请使用

    header('Content-Type: text/plain');
    

    Firefox不会尝试将响应解析为XML,也不会出现错误。

        2
  •  -2
  •   Alsciende    17 年前

    header("HTTP/1.0 200");
    exit();