2016-10-10 8 views
0

私はIframe内にファイルをアップロードしています。ユーザーがイメージをアップロードすると、このファイルアップロードはイメージをサーバーに送信し、サーバーはファイル名をファイルアップロードに渡します。今私はこの名前を使って、画像ファイルにFileContentResultという名前のアクションを送信します。以下を参照してください:FileContentResultとして親からIframe内のイメージを読み込むのが失敗したのはなぜですか?

.on('fileuploaddone', 
    function (e, data) { 
    name = data.result.files[0].name; 
    if (name) { 
     var el = $('<div class="imageLayer" onClick="ShowTopTools(this)">'+ 
       '<div class="resizePan"></div>'+ 
       '</div>'); 
     var image = new Image(); 
     image.src = '/Advertisement/Image/'+name; 
     image.onload = function() { 
        el.css('background-image', 'url(' + e.target.result + ')') 
        .css('width', this.width) 
        .css('height', this.height); 
     }   
     $("#box").append(el); 
}); 

すべてのものはimage.onloadが起動するまでうまく動作します。関数は実行されますが、閉じたブラケットで実行されます。それは失敗した。エルの 背景画像この取得:あなたの問題の理由は、非同期あるようですので、このコードを試してみてくださいBackground-image: url(undefined);

答えて

1

を:

.on('fileuploaddone', 
    function (e, data) { 
    name = data.result.files[0].name; 
    if (name) { 
     var el = $('<div class="imageLayer" onClick="ShowTopTools(this)">'+ 
       '<div class="resizePan"></div>'+ 
       '</div>'); 
     var image = new Image(); 
     image.src = '/Advertisement/Image/'+name; 
     $(image).data('target',e.target.result); 
     image.onload = function() { 
        el.css('background-image', 'url(' + $(this).data('target') + ')') 
        .css('width', this.width) 
        .css('height', this.height); 
     }   
     $("#box").append(el); 
}); 
関連する問題