2011-12-08 10 views
4

シナリオは次のように実行する必要があります。クライアントはアップロードしたCSVファイルのデータをテーブルに動的に取り込むCSVファイルをアップロードします。アップロードされたCSVファイルからJavaScriptにデータを返す最も良い方法は何ですか?

シンプルな形式でCSVファイルをアップロードできます。問題ない。 私はサーバー側でPHPでデータを解析できます。問題ない。 私はPHPサーバー側で配列を作成できます。問題ない。

どうやって処理するにはJavaScriptに戻すのですか?私はそれをAJAXできると思ったが、どこで要求を指摘するだろうか?

PHPを使って再帰的にページを呼び出すことを考えましたが、非同期性が失われてしまいました。これは問題ありません。

私はここに何か単純なものがないようです。

TIAあなたのお手伝いをします。

WR!

答えて

3

答えは簡単です。ドキュメントを非同期でアップロードし、そのアップロードコールでJSONが返されるようにします。

また、ドキュメントをアップロードしてサーバーにIDを返させ、そのIDのAJAXを使用してスクリプトを呼び出すようにしてください。こうすることで、大きなファイルに対してバックグラウンド処理を行い、準備ができたらデータを返すか、クライアントが5秒間待ってから再度試行する待機状態を返すことができます。

+0

oh look!私は深い水に濡れて、水没した崖から落ちました! O_o私はJSがサーバーにファイルをアップロードできることを知らなかった、私はそれがPHPのドメインだと思った。おっとっと。私はファイルとデータのPHP処理を中止すると言っていますか?私はJSONの部分をわずかに理解しています。 ID ...?その部分は何ですか?完全にそこに私を失った。 – WhiteRau

+0

。あなたの答えは、とにかく私を適切に指向させました。答えを探している人たち:[ここに行く](http://www.openjs。com/articles/ajax/ajax_file_upload /)を開き、チュートリアルに従ってください。これはブラッドが私に示唆しているものだと思う。 – WhiteRau

0

Ajaxルートを下りたい場合は、CSVデータだけを取得してjsonオブジェクトとして返すように特別に設計されたページ(またはルート)を作成する必要があります。データを生成するためにIDを知る必要があるとすれば、$ _POST ['id']を探し、そのIDのデータを取得し、json_encode(csvArray)データを返すcsvdata.phpを作成することができます。あなたはおそらくMIMEタイプを設定したいと思うでしょうheader('Content-type: application/json');これは例えばファイルを提供するスクリプトと同じです。あなたが知る必要があることは、何を要求し、どのデータを要求と共に送るかということだけです。ページ上にCSVデータが必要な場合は、要求と共に送信するデータを知っているスクリプトをレンダリングする必要があります。テンプレートエンジンは、小さな動的スクリプトをレンダリングできるはずです。原則的に、あなたは(HTML/JS生成するためのお好みの方法を使用して)あなたはcsvid値を動的に設定されている。このようなスクリプトを、生成する

... 
<body> 
... 
<script type="text/javascript"> 
    (function() { 
     var csvid = 1; 
     // Make ajax post to csvid.php with csvid as id 
    }());   
</script> 
</body> 

のようなスクリプトを生成します。特にデータが機密であり、セッション認証が必要な場合は、常にPOSTを使用してAjaxデータを取得してください。この場合のGETは、json配列のエクスプロイトに対してオープンになります。

また、Ajaxを使用せずに単純に配列をレンダリングすることもできます。したがって、ajaxリクエスト変数を作成する代わりに、配列にエンコードされたスクリプトをレンダリングするだけで済みます。

テンプレート:json_encode(csvarray)と

<script type="text/javascript"> 
    (function() { 
     var data = {jsondata}; 
     someNameSpace.someProcessingFunction(data); 
    }()); 
</script> 

はReplaces {jsondata}。

+0

私はまだテンプレートシステムの使用を約束していません。私が知っている唯一の人はスマイで、私はまだそのプールにはいない。私はそれを言うのが嫌いですが、私は言葉を読んで、彼らは私の頭の中でゲル化していません。 JSONを使用する場合、これはおそらく私が取るルートです。ありがとう! – WhiteRau

関連する問題