2012-03-13 9 views
2

今、jquery ajaxを使用してバックエンドに呼び出し(フォームを介して呼び出しから呼び出しに変更するパラメータを持つ)を使用してxmlファイルを取得するwebappがあります。プライベートアプリケーションのために、xmlデータを別の拡張子を持つファイルに入れたいと思います。ajaxから取得したデータを開き、自動的にダウンロードする

基本的には、ユーザーがボタンをクリックできるようにして、に返信されたajax xmlデータを含むファイルを「開く」または「保存する」と自動的にプロンプ​​トを出します。

私はPHPを使って生のhttpヘッダーを送信することに手を貸しましたが、それを動作させる方法を理解できません。 私はこれをすべてjavascriptとjqueryで書いています。

以下のコードでは、(1)Ajaxコールを作成する、(2)HTMLページにXMLを書き込む、(3)HTMLページを開くだけです。あなたが行われることができるはずですあなたは再び、ユーザーのためにそれを利用可能にする前に取得したデータ、で遊んでする必要がない限り

var format = function() { 
    $("button#format").click(function() { 
    $("#form").submit(); 
    $.ajax({ 
     url: "find", 
     beforeSend: function (xml) { 
     xml.overrideMimeType("application/octet-stream; charset=x-user-defined"); 
     }, 
     data: $("form#form").serialize(), 
     dataType: "html", 
     success: function(xml) { 
     xmlWindow = window.open("download.ivml"); 
     xmlWindow.document.write(xml); 
     xmlWindow.focus(); 
     }, 
     error: function(request) { 
     $("#webdiv").html(request.responseText); 
     } 
    }); 
    }); 
}; 
+0

重複:http://stackoverflow.com/questions/365777/starting-file-download-with-javascript – dragon

答えて

0

AJAXパラダイムにこのような何かを強制する必要はありませんPHPで。

<form id="format" action="download.ivml" target="_blank"> 
... 
</form> 

とjQueryでdownload.ivml

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ^(.*)download.ivml$ /path/to/where/I/process/the/request 
その奇妙なURLを処理するために、.htaccessファイルを使用して自分のサーバー上で最後に action

このような
​$('#format')​.submit(function(){ 
    // tweaking the post data, otherwise this whole block is not needed. 
    return true;  
})​; 

を変更します。だから私はこのような何かをするだろう

この最後の文法についてはよく分かりません.htaccessファイルです。

+0

jquery部分が冗長であるため編集されました。フォームを送信する前にデータを微調整する必要がなければ、jqueryブロックは必要ありません。 –

関連する問題