2012-11-13 12 views
6

私はAJAXを初めて使用しており、PHPがjQueryに返すものによって混乱しています。 ですから、このようにAJAX機能を持っている:AJAX jQuery PHPの戻り値

$.ajax({ url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(output) { 
        alert(output); 
       } 
}); 

(。私はアヤックスから別のStackOverflowのページを、これを取った)

しかし、彼らは成功のセクションでは、このように見える必要があります様々な他のリソースに:

success: function(data) {functionfoocommandshere} 

私はこの変数の命名に何を指しているのか混乱していますか? PHPは、最終的には、配列をエコーし​​た場合:

echo $myVar; 

は、どのように私はAJAXからこれを得ることができますか?

+1

'' SUCCESS'方法のdata'変数は何かを保持するあなた 'echo' PHPでのでのAjax経由で受け取ることができます。配列を直接渡すことはできません。最初にJSONに変換する必要があります。 – woz

+0

あなたはどの変数の名前を混同していますか? – Alfo

+0

これを参照してくださいhttp://www.php4every1.com/tutorials/jquery-ajax-tutorial/ – GBD

答えて

13

Ajax-Requestsはサイト全体をフェッチします。したがって、変数内のデータは取得されませんが、データパラメータ内のサイト全体が取得されます。一緒に作ったすべてのエコーがこのパラメーターになります。配列を取得する場合は、前にjsonに変換する必要があります。

echo json_encode($myArray); 

次に、あなたがこのよう

$.ajax({ url: '/my/site', 
data: {action: 'test'}, 
dataType: 'json', 
type: 'post', 
success: function(output) { 
       alert(output); 
      } 
}); 
+0

本当に値を 'echo'する必要はありますか?あなたは '出力'を表示したくない場合はどうなりますか? @Gnietschow –

+0

'echo'はユーザーに何も表示しません。サーバーの応答にデータを書き込むだけなので、クライアントに送信されます。 ajax呼び出しが 'output'を受け取った後、この応答をユーザーに表示するかどうかはあなた次第です。 – Gnietschow

-1

PHP AJAX関数から返されるデータは、successブロックから取得できます。ここでは、JavaScriptで使用するために、より便利なフォーマットに配列を回すためにjson_encodeを使用し、あなたのPHPファイルでmanual

$.ajax({ url: '/my/site', 
data: {action: 'test'}, 
type: 'post', 
dataType: 'json', 
success: function(output) { 
    //output is the data returned from PHP AJAX function in JSON format 
    alert(output); 
    } 
}); 
+0

それでは関係ないですか? .ajaxコマンドは、function()引数の中にあるものがPHP情報を返すことを知っていますか? – eatonphil

+1

はい、そうです。 –

+0

すごい、それは物事をクリア! – eatonphil

6

です。

echo json_encode($myArray); 

次に、あなたのJavaScriptで、success方法のdata変数はJSONを開催します:だからあなたのようなものを持っているでしょう。これをJavaScriptオブジェクトに変換するには、jQueryのparseJSONを使用します。これにより、操作が非常に簡単になります。私は、配列に含まれる何か分からないが、あなたはこのような何かを行う可能性があります:

$.ajax({ url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(data) { 
     var obj = jQuery.parseJSON(data); 
     alert(obj.name[0] === "John"); 
     } 
}); 

ここでも、ここでdata変数は何もPHPの出力が含まれていますが、JSONは戻ってデータを転送するための共通かつ便利な方法ですあなたのJavaScriptに

3
<script type="text/javascript"> 
$.ajax({ 
    url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(output) { 
     alert(output); 
    } 
}); 
</script> 

<?php 
$action = $_POST['action']; 
echo $action;?> 

出力/エコー出力はすべて、正常終了機能に戻されます。これは、あなたがリアルタイムで実行する必要がある何かでHTMLコンテナを塗りたいときに便利です。

この問題が解決したら、別の方法として、JSONを使用して変数を値とともに返すことができます。

+0

その完全なhtml formateを取得して、値だけを返したい –