2012-05-02 21 views
1

JavaScriptでPHPの応答を受け取ろうとしています。javascriptのPHPスクリプトからデータを取得

私のPHPは、次のようになります。

some code 

    if(...) echo "1"; 

    else echo "2"; 

はJavaScript:

 

    function GetChoice() { 
     var returned=""; 
     $.ajax({ 
      async: false, 
      cache: false, 
      url: "http://mydomain.com/script.php", 
      type: "POST", 
      dataType:"text", 
      success: function(data) { 
       returned = data; 
      } 
     }); 
     return returned; 
    } 

    var r = GetChoice(); 
    alert(r); 

しかしGetChoice()何も返しません。どうしましたか?

UPD:javascriptとphpスクリプトが同じサーバー上にある場合に機能します。私のスクリプトは異なるドメインにあります。

+1

あなたは、FirefoxのFirebugを使用する場合、あなたはなぜあなたは絶対に使用している – skos

+0

ポストあなたの本当のPHPコードを取得しているならば、あなたはネット]タブで確認することができますパス?それは同じサーバーからですか? –

+0

を$ _POSTのparamsをチェックする任意のAJAXの応答 – Shikiryu

答えて

0

GetChoice()は、成功したコールバックが実行される前に何も返しません。

成功パラメーターとして定義した関数であるコールバックは、データがサーバーから要求されるまで発生しません。

これは(AJAXでA)asyncronousあるので、コールバックが

+1

彼はすでに、非同期:falseを使用して同期呼び出しであることを示しています –

+0

公正なポイント - 私はそれを逃した! –

1

を実行される前に戻すためにGetChoice()関数を起こし続けると、コードの残りの部分は、これを試してみてください。

function GetChoice() { 
    var returned = ""; 
    $.ajax({ 
     async:false, 
     cache:false, 
     url:"http://mydomain.com/script.php", 
     type:"POST", 
     dataType:"text", 
     success:function (data) { 
      alert(data); 
     } 
    }); 
} 
+1

何も警告しないだろう –

+0

アラートが機能しませんでした。 – Amadeus

+0

"うまくいかなかった"というのは本当に建設的ではありません。 – Shikiryu

1

てみてくださいこの:

temp1.php

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script> 


    function GetChoice() { 
     var returned = ""; 
     $.ajax({ 
       async: false, 
       cache: false, 
       type: "POST", 
       url: "http://localhost/temp2.php", 
       data: { name: "John"} 
       }).done(function(msg) {       
         returned = msg; 
       }); 
     return returned; 
    } 

    var r = GetChoice(); 
    alert(r); 

</script> 

temp2.​​php

<?php 

     echo $_REQUEST["name"];   
?> 

その作業....!

0

これは)スクリプト

<script type="text/javascript"> 
$.ajax({ 
async:false, 
cache:false, 
url:"http://path.com/to/file", 
type:"POST", 
dataType: "html", 
data: 'data', 
success: function(data){ 
    alert(data); 
} 

}です。

とあなたのPHPファイルにこのコードを書く

<?php 

function test() 
{ 
    $str = 'This is php file'; 
    return $str; 
} 

echo test(); 

?> 

PHPファイルへのパスが正しいことを確認し、別のPHPファイルにスクリプトを追加します。基本的には2つのファイルが必要です。

0

問題は、あなたの例では、$ .ajaxがすぐに戻り、成功コールバックとして渡された関数が呼び出される前に次のステートメントreturn result;が実行されるという問題です。 ここで説明します。 How do I return the response from an asynchronous call?

運、

関連する問題