0

同様の質問があったことは知っていますが、ここで明確にしたいと思います。

次の Ajax セットアップを使用します。

        $.ajaxSetup({
        cache: true,
        dataType: 'json',
        error: function(xhr, status, error){
           console.log(status);
        },
        timeout: 60000, //Timeout of 60s
        type: 'POST',
        url: 'test.php'
    }); //Close $.ajaxSetup()

    $('#openTest').bind('click', function(){
    $.ajax({
        data: {val: "Hello", val2: "Hello2"},
        success: function(response){
            console.log('complete');
            console.log(response);
        }
    });

「test.php」が次の場合:

<?php
$return= array ('one'=>'one1', 'two'=>'two1');
return json_encode($return);
?>

パースエラーが発生しています。しかし、「return」を「echo」に置き換えると、問題なく動作します。

<?php
$return= array ('one'=>'one1', 'two'=>'two1');
echo json_encode($return);
?>

この $.ajax 呼び出しを介して、より複雑なデータを取得します。「リターン」が機能することを期待していましたが、「エコー」は良い解決策ではないようです。

それで、あなたは何を提案していますか?Ajax のセットアップまたは呼び出しに何か問題があるので、'return' は機能しません。また、'echo' は適切な解決策ですか?

ありがとう。

4

5 に答える 5

1

Return は、関数でデータを取得し、PHP で何らかの方法で使用するために使用されます。Echo は ajax 呼び出しに使用されます。これは、PHP コードがそれを呼び出しているもの (ブラウザー、ajax 呼び出しなど) にデータを出力するためです。

header('Content-Type: application/json');また、物事を正しく適切に行うために、PHP ファイルにも含める必要があるでしょう。

于 2013-01-26T10:32:07.407 に答える
1

いいえ、あなたの ajax のセットアップに問題はありません。PHP でreturnが使用されているobjectsvariables、 のような他の言語に値を返すことができないためですjavascript。使用しているときはecho、値を送信して処理できるHTTP responseようにしますajax response

複雑なデータを処理する最善の方法は、次のような配列で送信することです。

$arr = array();
$arr['res'] = 'something';
$arr['res2'] = 'somethingelse'; 
echo json_encode($arr);

そして、こので前に指定したようにobject.parameter、あなたのように処理できます。jquery code

于 2013-01-26T10:32:58.570 に答える
1

return関数の呼び出し元にデータを返します。関数内にいないため、return は使用できません。 echoデータを印刷します。行くecho道も同じです。

于 2013-01-26T10:29:41.683 に答える
1

PHP で return を実行すると、出力されません。echo を実行すると、出力されます。

php や Ajax に問題はありません。間違っているのはコンテキストだけです。

簡単に言えば、返されたデータをキャッチして処理する必要がある場合は、return を使用します。return を使用する最適なケースは、関数内です。

何かを直接印刷する必要がある場合は、echo を使用します。

ここでは、エコーと終了を使用することをお勧めします。

于 2013-01-26T10:30:13.983 に答える
0

常に ajax 呼び出しで php を html ファイルとしてエコーまたは印刷または解析してからデータを取得します。これにより、多くの労力が節約されます。

ajax はファイルを読み取るだけで、PHP と JS の 2 つの異なる言語で呼び出しを行う方法はありません。JS はサーバーからファイルを返しただけです。それが php の場合は解釈され、Ajax 呼び出しに html として、または可能な限り進みます。

于 2013-01-27T14:50:58.530 に答える