2

私はasp.net mvc 3アプリケーションに取り組んでいます。タイトルは、私が抱えている問題を示しています。このエラーがどのように発生するかを説明します。

カミソリ ビューから画像をアップロードするために JavaScript を使用しています。スクリプトはそれほど長くないので、ここに投稿します。

function fileUpload(form, action_url, div_id) {
        // Create the iframe...
        var iframe = document.createElement("iframe");
        iframe.setAttribute("id", "upload_iframe");
        iframe.setAttribute("name", "upload_iframe");
        iframe.setAttribute("width", "0");
        iframe.setAttribute("height", "0");
        iframe.setAttribute("border", "0");
        iframe.setAttribute("style", "width: 0; height: 0; border: none;");

        // Add to document...
        form.parentNode.appendChild(iframe);
        window.frames['upload_iframe'].name = "upload_iframe";

        iframeId = document.getElementById("upload_iframe");

        // Add event...
        var eventHandler = function () {

            if (iframeId.detachEvent) iframeId.detachEvent("onload", eventHandler);
            else iframeId.removeEventListener("load", eventHandler, false);

            // Message from server...
            if (iframeId.contentDocument) {
                content = iframeId.contentDocument.body.innerHTML;
            } else if (iframeId.contentWindow) {
                content = iframeId.contentWindow.document.body.innerHTML;
            } else if (iframeId.document) {
                content = iframeId.document.body.innerHTML;
            }

            document.getElementById(div_id).innerHTML = content;

            // Del the iframe...
            setTimeout('iframeId.parentNode.removeChild(iframeId)', 250);
        }

        if (iframeId.addEventListener) iframeId.addEventListener("load", eventHandler, true);
        if (iframeId.attachEvent) iframeId.attachEvent("onload", eventHandler);

        // Set properties of form...
        form.setAttribute("target", "upload_iframe");
        form.setAttribute("action", action_url);
        form.setAttribute("method", "post");
        form.setAttribute("enctype", "multipart/form-data");
        form.setAttribute("encoding", "multipart/form-data");

        // Submit the form...
        form.submit();

        document.getElementById(div_id).innerHTML = "Uploading...";
        form.setAttribute("action", '/forms/displayform');
    }

このスクリプトを使用することで、ビジネス ロジックを実行するコントローラーでイメージを取得するため、実際にスクリプトが原因であるかどうかはわかりませんが、デバッグ中に別の理由を見つけることができません。したがって、コントローラーが作業を終了すると、Visual Studio 2010 というタイトルの新しいタブが開きScript block[dynamic]、次のコードが表示されます。

function anonymous()
{
iframeId.parentNode.removeChild(iframeId)
}

これは実際には私の JavaScript の一部です:

    // Del the iframe...
    setTimeout('iframeId.parentNode.removeChild(iframeId)', 250);

私はJSについて非常に基本的な知識を持っています。このコードを使用していますが、その一部が理解できません。ここ-コメントとコード自体によって、何が起こっているのかはある程度明らかですが、これにコメントして画像をアップロードしようとすると、エラーは発生せず、これは非常に魅力的ですが、おそらくコードはOK、このエラーが発生する理由は別の場所にあるので、ここに投稿して、このエラーの原因とその修正方法に関するヘルプを取得しますか?

PS

そして、これは私が画像をアップロードするために使用するフォームです:

@using (Html.BeginForm("Upload", "Forms", FormMethod.Post))
{
    <input name=@Model[0].DocumentId type="hidden" />

    <input type="file" name="datafile" id="file" onchange="readURL(this);" />
    <input type="button" name="Button" value="Upload Image" id="UploadButton" onclick="fileUpload(this.form,'/forms/upload','uploadImg'); return false;"/>
    <div id="uploadImg" style="display: inline-block;">
        <img id="blah" src="#" alt="your image" style="display:none;"/>
    </div>
}
4

1 に答える 1

0

これは setTimeout の構文です

setTimeout(function(),milliseconds);

だから、あなたはこのようなことをするべきです

setTimeout(function(){
           iframeId.parentNode.removeChild(iframeId);
           }, 250);
于 2013-05-31T06:17:15.363 に答える