2011-01-08 10 views
3

私は次のように$の.post()を使用しようとしていますを返すためにjqueryの$の.post()を使用して:複数の値

$.post("file.php", { file_id: $(this).val()}, function(data){...} file.phpその後、データベースクエリを行い、タイトルの配列を返します、説明および画像参照。

私がしたいことは、それぞれフォームフィールドの.val()を更新することができます。私は単一の変数でこれを行う方法を理解し、それだけだろう次

$.post("file.php", { file_id: $(this).val()}, function(data){ 
    $('#title').val(data); 
} 

しかし、私はデータが別々の変数のいずれかとしてや配列などjqueryの上で認識可能に戻す得るのですか?

ありがとうございます。

答えて

7

the docs for $.postを参照してください。 4番目のパラメータはdataTypeです。 JavaScriptオブジェクトまたは配列に返されるデータを解析するために、これをJSONに設定できます。あなたのfile.phpファイルで

$.post(
    "file.php", 
    { file_id: $(this).val() }, 
    function(data){ $('#title').val(data.title); $('#para').val(data.paragraph); }, 
    'json'); 

、あなたはjQueryのは、あなたのデータをJSONことになっている知っているので)(ヘッダを含めるようにしてください

<?php 
$return_data=array('title'=>'Fishes Go To Market','paragraph'=>'Lots of stuff'); 

header('Content-Type: application/json'); 
echo json_encode($return_data); 
exit(); 

ような何かを行うことができ、およびjson_encodeので、使用しますそれは適切にフォーマットされています。

詳細についてはjson_encodeドキュメントを、docs on headerを参照してください。 Remeberでは、header()の前に他の出力を置くことはできず、json_encodedデータを出力することもできません。ヘッダーとJSONは無効になります。

+0

は完全に機能しましたが、コードに誤字があります($ return_data || $ return_array)ありがとうございます! – TH1981

+0

おっと、そうです。私は後世のために編集します。うれしかったのでうれしいよ! – JAL

3

最も簡単な方法は値をJSONとして渡すことです。配列をサーバー上のJSONに変換する必要があります(たくさんのserver-side libraries available for thisがあります)。など四番目のパラメータを追加することにより、JSONなどのデータを返すために、あなたの.post()方法を変更する:あなたはその後、同じように簡単にあなたの変数を読み込むことができ

$.post("file.php", { file_id: $(this).val()}, function(data) { ... }, "json"); 

$('#title').val(data.title); 
$('#description').val(data.description);