XML标记名称不匹配

时间:2012-11-11 12:29:22

标签: php javascript

我通过iframe上传文件。我将上传的文件发送到一个php页面,该页面返回一个显示消息的数字或一个html块,我想用它来替换我父页面上列出该用户所有上传文件的表格。在我的PHP处理页面上,我有:

upload_process.php

<script language="javascript" type="text/javascript"> 
window.top.window.stopUpload(<?php echo $result;?>);
</script> 

$ result返回:

<tr><td><input name='checkbox[]' type='checkbox' id='checkbox[]' value='43'></td><td><a href='../php/viewimages.php?id=13')'>New One</a></td><td>Clincal Literature</td><td>2012-11-11</td></tr>

Firebug抛出:SyntaxError:XML标记名称不匹配(预期输入)并且在值= 43之后有一个指向</td>的箭头

出现此错误时,主页上运行的函数是:

<script type="text/javascript">
    function startUpload() {
        document.getElementById('f1_upload_process').style.visibility = 'visible';
        return true;
    }

    function stopUpload(success) {
        var result = '';
        if (success == 0) {
            document.getElementById('result').innerHTML = '<div class="msg-error" style="width:492px;">There was an error during file upload!<\/div><br/>';
        } else if (success == 2) {
            document.getElementById('result').innerHTML = '<div class="msg-error" style="width:492px;">ERROR! Please upload a document with the following file types....<br/><br/>txt, doc, xls, rtf, ppt, pdf, jpg, jpeg, gif, png, xlsx, docx, png, pps, ppsx, ppt<\/div><br/>';
        } else {
            window.top.document.getElementById('attachment_table').innerHTML = result;
            document.getElementById('result').innerHTML = '<div class="msg-status" style="width:492px;">The file was uploaded successfully!<\/div><br/>';
        }
        document.getElementById('f1_upload_process').style.visibility = 'hidden';
        return true;
    }
</script>

有人能指出我做错的方向吗?我是一个自学老师,我通常使用jquery / ajax来解决这个问题但是因为我正在处理文件,所以我不得不在这上面使用iframe。 THX!

1 个答案:

答案 0 :(得分:1)

您的upload_process.php似乎有一些逃避问题。根据您的问题,返回以下内容(同时使用Firebug进行检查):

<script language="javascript" type="text/javascript"> 
window.top.window.stopUpload(<tr><td><input name='checkbox[]' type='checkbox' id='checkbox[]' value='43'></td><td><a href='../php/viewimages.php?id=13')'>New One</a></td><td>Clincal Literature</td><td>2012-11-11</td></tr>);
</script> 

它似乎是XML解析的(或者至少是某种引发与XML相关的错误的东西),并且说<input>标记没有正确关闭,但后面紧跟</td>。您应该始终在cdata-section中输出脚本内容,将它们包含在注释中或转义标记和引号。

另外,检查您的答案的内容类型标题和HTML文档类型等,它们可能不正确。它不只包含<script>标记,是吗?

接下来,传递给JS函数stopUpload的参数应该是一个字符串。那里的纯HTML字符串使脚本无效。将它括在引号中,并转义内部的任何引号(没关系,你现在只使用了撇号)。