-1

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

上传进程.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 tag name mismatch (expected input) and has a arrow point to the </td>after value=43

当我收到此错误时,在主页上运行的功能是:

<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。谢谢!

4

1 回答 1

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 部分中输出脚本内容,将它们包含在注释中或转义标签和引号。

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

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

于 2012-11-11T12:51:50.797 回答