2

したがって、ユーザーが「エクスポート」ボタンを押すページがあり、javascript 関数を実行してエクスポートに必要なデータを取得し、php スクリプトを呼び出してデータベースからデータを取得し、ダウンロードを強制します。今の問題は、javascript を実行して、スクリプトへの投稿を呼び出すことができますが、何もダウンロードされないことです。ウィンドウを実際にphpファイルに移動していないためだと思います。単にスクリプトを呼び出しているだけです。誰でも私を助けることができますか?

javascript: ids は、情報を取得するために渡す必要がある配列です。これは、ユーザーが「エクスポート」ボタンを押したときに呼び出す関数内にあります。

$.ajax({        
   type: "POST",
   url: "exportLeads.php",
   data: { 'idArray' : ids }
}); 

php: PHP quetsion経由でこの CSV へのエクスポートを使用しました。関数は適切に実装されており、エラーは発生しません。ダウンロードを求められるファイルはありません。

$data = mysql_query($query) or die($query.mysql_error());
$results = array();
while($line = mysql_fetch_array($data, MYSQL_ASSOC)){
    $results[] = $line;
}
download_send_headers("data_export_" . date("Y-m-d") . ".csv");
echo array2csv($results);
die();
4

3 に答える 3

1

ajax でファイルをダウンロードすることはできません。ユーザーをファイルの場所にリダイレクトするために使用できますwindow.location.hrefが、これを読むことをお勧めします。誰かがあなたにより良い答えを持っています:)

jQuery.Ajax でファイルをダウンロードする

または、JavaScriptでこのようなものを使用することもできます

$.post( "exportLeads.php", { 'idArray' : ids }, function( response ) {
  if ( response.error === 0 ) {
    window.location.href  = response.location;
  }
}, "json" );

そしてあなたのphpファイルで

<?php
  if ( $has_error ) {
    echo json_encode( array( "error" => 1 ) );
  }
  else {
    echo json_encode( array(
      "error"     =>  0,
      "location"  =>  "link_to_file"
    ) );
  }
?>
于 2013-07-06T18:58:37.573 に答える
1

コードを書く時間はありませんが、簡単に言うと、次のものが必要です。

  • JSを実行して、ajax経由でサーバー側を呼び出します。
  • ファイルを生成し、ランダムな名前でサーバードライブに配置します。その名前をセッションに覚えておいてください。クライアントに何らかの応答を送信します。
  • クライアントが応答を受け取ると、JS を使用してユーザーをページにリダイレクトします。このページでは、PHP コードがセッションにファイル名があるかどうかを確認し、ある場合はこのファイルを読み取り、セッションからそのファイルとその名前を削除します。
于 2013-07-06T18:54:54.707 に答える
0

あなたの成功関数で window.location.href に行くことができます:

$.ajax({
     type: "POST",
     dataType: "json",
     url: "exportLeads.php",
     data: { 'idArray' : ids },
     success: function(data) {
          if (data.success) window.location.href = "/link-to-your-download-script";
     }
}); 

json_encode への応答を変更し、機能を 2 つのスクリプトに分割する必要があります。1 つはエクスポート用、もう 1 つはダウンロード スクリプト用です (一意の ID または sth を使用)。

于 2013-07-06T18:51:59.617 に答える