2

アプリケーションの起動時にこの JSonResult が存在せず、これを使用したい場合 (「TypeError」エラーが発生します)

var newImg = $.parseJSON($("#UploadTarget").contents().find("#jsonResult")[0].innerHTML);

私は何をしたいですか?このオブジェクトが存在するか、このオブジェクトが値を変更するかを通知するイベントが必要です。

 var newImg = $.parseJSON($("#UploadTarget").contents().find("#jsonResult")[0].innerHTML);

これはどう書けばいいですか?

using System.Web.Mvc;

    namespace pol
    {
        public class WrappedJsonResult : JsonResult
        {
            public override void ExecuteResult(ControllerContext context)
            {
                context.HttpContext.Response.Write("<html><body><textarea id=\"jsonResult\" name=\"jsonResult\">");
                base.ExecuteResult(context);
                context.HttpContext.Response.Write("</textarea></body></html>");
                context.HttpContext.Response.ContentType = "text/html";
            }
        }
    }

ボタンをクリックすると、画像はサーバーにアップロードされますが、結果は重要なメソッドを開きません UploadImage_Complete();

@model po.Models.Stwna
@using (Html.BeginForm("UploadImage", "StronaGlowna", FormMethod.Post,
                                         new
                                             {
                                                 enctype = "multipart/form-data",
                                                 id = "ImgForm",
                                                 name = "ImgForm",
                                                 target = "UploadTarget"
                                             }))
{
    <input type="file" name="imageFile" />

    <input type="button" class="button" value="@Model.ZO" onclick="UploadImage()" />
}
<iframe id="UploadTarget" name="UploadTarget" onload="UploadImage_Complete();" style="position: absolute;
    left: -999em; top: -999em;"></iframe>
<div id="Images">
</div>
<script type="text/javascript">
    var isFirstLoad = true;

    function UploadImage() {
        $("#ImgForm").submit();
    }
    function UploadImage_Complete() {
        //Check to see if this is the first load of the iFrame
        if (isFirstLoad == true) {
            isFirstLoad = false;
            return;
        }

        //Reset the image form so the file won't get uploaded again
        document.getElementById("ImgForm").reset();

        //Grab the content of the textarea we named jsonResult .  This shold be loaded into
        //the hidden iFrame.
        var newImg = $.parseJSON($("#UploadTarget").contents().find("#jsonResult")[0].innerHTML);

        //If there was an error, display it to the user
        if (newImg.IsValid == false) {
            alert(newImg.Message);
            return;
        }



        //Create a new image and insert it into the Images div.  Just to be fancy,
        //we're going to use a "FadeIn" effect from jQuery
        var imgDiv = document.getElementById("Images");
        var img = new Image();
        img.src = newImg.ImagePath;

        //Hide the image before adding to the DOM
        $(img).hide();
        imgDiv.appendChild(img);
        //Now fade the image in
        $(img).fadeIn(500, null);


       // $('#Images').text(newImg.ImagePath);
    }
</script>

MVC

[HttpPost]
        public WrappedJsonResult UploadImage(HttpPostedFileWrapper imageFile)
        {

            return new WrappedJsonResult
            {
                Data = new
                {
                    IsValid = true,
                    Message = string.Empty,
                    ImagePath = Url.Content(String.Format("http://a1.ec-images.myspacecdn.com/images01/29/4982945eb42646efafe2f94855ac3d21/l.jpg"))

                }
            };
        }

ボタンを 2 回クリックするとこの画像が表示されますが、1 回クリックすると結果が得られません。

4

1 に答える 1

0

タイマーを使用してこのシンプルなタイマーを作成することにしました

于 2013-04-28T08:29:06.883 に答える