-1

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>

</td>Firebug がスローしています: SyntaxError: XML タグ名の不一致 (予期される入力) と、値 = 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-section 内に出力するか、コメントで囲むか、タグと引用符をエスケープする必要があります。

また、回答の content-type ヘッダーや HTML doctypes などを確認してください。正しくない可能性があります。タグだけじゃない<script>ですよね。

次に、JS 関数に渡す引数stopUploadは文字列でなければなりません。そこにあるプレーンな HTML 文字列により、スクリプトが無効になります。引用符で囲み、内部の引用符をエスケープします (問題ありません。ここではアポストロフィのみを使用しています)。

于 2012-11-11T12:51:50.797 に答える