2012-02-19 1 views
1

ユーザは、データの配列をファイルに保存することで進捗状況を保存できるようにしようとしています。私は、ヘッダーを変更してPHPのダウンロードを強制することができます知っているが、私は、ボタンを再度有効にする応答が必要なajax呼び出しでPHPスクリプトを呼び出している。私は最初の場所でボタンを無効にする必要がありますjqueryはスクリプトに送るデータをたくさん集めるためには数秒かかります。私はローカルファイルを保存する以下のコードを投稿しました。理想的には、「保存」ダイアログが好きで、ajaxにそれを知らせるようにします。PHP-Ajaxフォースダウンロード

私はダウンロードを強制し、まだjsonデータ応答をエコーバックできますか?

は、再び トッド

require_once('../FirePHPCore/fb.php'); 
session_start(); 

/* Initialize an ajax pessimistic response object. */ 
$ResponseData = array 
(
    'Success' => false, 
    'Message' => 'There was an error saving your chart right now. Please try again later.' 
); 

// assemble the final array to save to disk 
$finalArray     = array(); 
$finalArray['colorChart']  = $_POST['colorChart']; 
$finalArray['threadBrand'] = $_POST['threadBrand']; 
$finalArray['chartName']  = $_POST['chartName']; 
$finalArray['stitchChart'] = $_POST['stitchChart']; 

file_put_contents('array.txt', serialize($finalArray)); 

$ResponseData['Success'] = true; 
$ResponseData['Message'] = 'Saved.'; 
/* Output the response data in JSON. */ 
echo json_encode($ResponseData); 

答えて

1

をいただきありがとうございますあなたのAJAX呼び出しがPHPが一時ファイルのファイル名を返し、その後、ダウンロード用のファイルを準備することができます。

次に、JavaScriptはブラウザを一時ファイルにリダイレクトできます。適切なヘッダーが設定されている場合、ファイルはダウンロードされ、ブラウザーウィンドウは変更されません。

+0

私はあなたがJSでダウンロードを強制できるとは思わなかったのですか? – maddogandnoriko

+0

'location.href = 'download.php';'ここで 'download.php'は適切なダウンロードヘッダを設定します。簡単に;) –

+0

したがって、基本的に2つのajax呼び出し? 1つは生成し、もう1つはダウンロードするか? – maddogandnoriko