2011-07-20 6 views
1

誰かがこんなことをしたいと思っています...xds ajaxファイルアップロード

私は、多くの場所で消費されるWebサービスを構築しています。

www.mywebservice.devと野生で実物を再現するために私のローカルマシン上で設定www.mysite.dev ...私は私が投稿できるようにするために、動的スクリプトタグのメソッドを使用しています

フォームは、第2のサーバへのファイルアップロードを含む。

ページ(www.mysite.com)は、www.mywebservice.dev(現在はfile_get_contents呼び出しをエコーし​​ています)を呼び出します。

Webサービスが

インサイドprocessEvent.jsは上記と同じjquery.formプラグインを(含むように別のコールが別のあるページや苦情に注入され

<script script type="text/javascript"> 
$(function(){ 
    var $scrpt = $('<script><\/script>'); 
    $scrpt 
     .attr('type' , 'text/javascript') 
     .attr('src','http://www.mywebservice.dev/_assets/script/processEvent.js'); 
$('head').append($scrpt); 

}); 
</script> 
<form id=£event-form" ... > 
....... 
</form> 

...返しますコールが、明らかにdiferenctファイル)およびAJAX呼び出し:

$('#event-form').bind('submit',function(){ 
    $(this).ajaxSubmit({ 
     url  : 'http://www.nmssys.dev/webservices.php', 
     type : 'POST' , 
     data : { ajax : 'true' , webservice : 'processEvent' } , 
     success : function(response){ 
         consloe.log(' WOOHOO ' , response); 
        }, 
     error : function(jqXHR , textStatus , errorThrown){ 
         console.log(' BORKED ' , jqXHR , textStatus , errorThrown); 
        } 
    }); 
    return false; 
}); 

これまでのところは良い...

投稿がトリガされたら、私は奇妙な結果を得ます。

ドキュメントによると、jquery.formはファイルのアップロードに対応するためにiframeを自動的に作成します。 submitingとき私は放火犯からfollwoing情報を取得...

コンソール:ネットタブで

[jquery.form] state = uninitialized 
[jquery.form] cannot access response document: Error: Permission denied to access property 'document' 
[jquery.form] aborting upload... aborted 
BORKED Object { aborted=1, status=0, more...} aborted server abort 
[jquery.form] state = interactive 

...しかし

要求のエントリの下の応答が予想通りJSONObjです送信された投稿の詳細と...

このfeckerの権利を得るための助けは、大歓迎です。

ハグとキスをすべてに。

答えて

1

は親ページに戻って応答データを取得するソリューションは、[この](http://benalman.com/projects/jquery-postmessage-plugin/を使用してこれを行うには、私が管理しているjquery postmessage plugin

0

OK私は進歩しました!

私はファイルアップロードの応答を管理する方法であるiframetargetオプションで苦労していました。ブラウザは指定されたiframeに出力を配信するのではなく、新しいタブを開いていました。

ソリューション...動的IFRAMEを作成し、体にそれを追加...

$('<iframe name="iframeUploader"/>') 
    .prependTo('body') 
    .attr({'id': 'responseTarget'}) 
    .css({'width':'1px','height':'1px','position':'absolute','left':'-9999px','top': '-9999px'}); 

などのように提出する変更:

$('#nms-event-form').live('submit',function(){ 
    $(this).ajaxSubmit({ 
     url   : 'http://www.mywebservice.dev/webservices.php' , 
     type   : 'POST' , 
     dataType  : 'xml' , 
     data   : { ajax : 'true' , webservice : 'processEvent' } , 
     success  : function(response , status){ 
          consloe.log(' WOOHOO ' , response); 
         } , 
     error  : function(jqXHR , textStatus , errorThrown){ 
          console.log(' BORKED ' , jqXHR , textStatus , errorThrown); 
         } , 
     complete  : function(){ 
          console.log($('#responseTarget').html()); 
         } , 
     iframeTarget : '#responseTarget' 
    }); 
    return false; 
}); 

CSSは、単にのフラッシュを防止iframeコンテンツが変更されたときの可視性。

これはリモートサーバーからの応答を配信しています。これまでのところ、すべてのデータとファイルが渡されたように見えます。(

私はajaxSubmitへの完全なオプションを追加したものの、まだそれが発射されていません...

[jquery.form] state = complete 

を、応答データは、iframe内に見ることができます:放火犯で

私は今取得します私がコンソールで状態=完全なmssgを取得したにもかかわらず)私はそれを取得したときにこれ以上来て、報告します...

0

iframetargetを使用すると、応答を処理します。それでもやることができたらうれしいです。

+0

を使用していました) –

関連する問題