1

jQuery と PHP を使用して画像をアップロードしようとしています。多くのプラグイン ソリューションがあることは知っていますが、私はこれを使用しています。問題なくファイルをサーバーにアップロードできますが、私の人生では、ファイル名を取得して画像を表示する方法がわかりません。投稿先の iframe からファイル名を取得する方法はありますか? ここに私が取り組んでいるコードがあります:

jquery

$('#file').change(function()
{ 
    var iframe = $('<iframe name="postiframe" id="postiframe" style="display:none" />');
    $("body").append(iframe);
    var form = $('#form');
    form.attr("action", "../hub.php?handler=add_item");
    form.attr("method", "post");
    form.attr("enctype", "multipart/form-data");
    form.attr("encoding", "multipart/form-data");
    form.attr("target", "postiframe");
    form.attr("file", $('#file').val());
    form.submit();
    $("#postiframe").load(function()
    {
        iframeContents=$("#postiframe")[0].contentWindow.document.body.innerHTML;
        console.log('added : '+iframeContents);                     
    });    
});

上記のコードは、「追加された:」部分以外は何も出力しません。どんな助けでも大歓迎です:)

4

2 に答える 2

1

アップロードが完了した後 (できれば に投稿しているとき)にサーバーから/ をecho実行するprint必要があるため、質問のコードのように Javascript を使用して取得できます。filenamepathtext/HTMLiframe

iframeContents=$("#postiframe")[0].contentWindow.document.body.innerHTML;
console.log('added : '+iframeContents);

アップロードされた画像を A​​jax 経由で新しい PHP (echoたとえば、JSON を使用) にフェッチする新しい JS 要求をコーディングすることもできますが、そのフォーム送信でアップロードされたファイルだけを取得する場合は不要です。

于 2012-08-11T22:10:31.347 に答える
0

window.name手法を使用して、iframeからメインウィンドウに文字列データを渡すことができます。使用の簡単な例:

Iframe:

//doing your stuff, when finished store what you need in window.name property
window.name = '{"key1":"mydata1","key2":"mydata2"}'
window.location.href='about:blank';

メインウィンドウ:

$(iframe).bind('load',function(){
    //triggered every time iframe's location is changed
    var iframe_data = this.contentWindow.name;
    if(!iframe_data.length) {
      //it's a first time iframe loaded
      return;
     }
    else{
      //iframe location is changed, we're expecting to receive some data
      $(this).unbind('load');
      console.log($.parseJSON(iframe_data));
      //{"key1":"mydata1","key2":"mydata2"}
    }

})

iframeが別のオリジン(ドメイン)に配置されている場合でも機能するはずです。このコードは特にテストしていませんが、機能するはずです。プロジェクトの1つからコピーして貼り付けました。

于 2012-08-11T22:36:29.483 に答える