2011-12-21 12 views
0

私はCodeIgniterのを使用して、私は((random_stringによる))のコードを以下のようにPHPでuniqidコードを作りたい:jQuery関数の結果PHPコードを取得しますか?

function coding(){ 
    echo random_string('unique'); 
} 

私は(jsのコードで使用するため)、jQueryの機能で結果トップ機能を使用したい、私はjqueryコードでこれを試してみてくださいが、alert(coding())のこの出力は "未定義"です。どのようにそれを修正できますか?

function coding(){ 
    $.ajax({ 
     type: "POST", 
     dataType: "text", 
     url: "coding", 
     cache: false, 
     success: function (data) { 
      return data; 
     } 
    }) 
} 
alert(coding()) // in here output is "undefined" !!!? 

答えて

2
function coding(){ 
    var temp; 
    $.ajax({ 
     type: "POST", 
     dataType: "text", 
     url: coding, 
     cache: false, 
     async: false, 
     success: function (data) { 
      temp = data; 
     } 
    }) 
    return temp; 
} 
alert(coding()); 

+0

これは正常に動作しますか? AJAXは非同期で呼び出すので、関数 'coding()'がすでに 'temp'を返すと、' success'が呼び出されます。私の推測では、あなたはいつも「未定義」になるでしょう。 – johndodo

+0

"async:false"はコールを同期させます –

+0

おっと、それを忘れました... true。 :) OPは注意を払う必要があります - これは、コールの期間中、関数が "ハングする"ことを意味します。 OPが関数を呼び出す方法を変更し、AJAXを適切に(非同期に)使用する方が良いでしょう。 – johndodo

1

コーディング関数は非同期ですbecuseそれはあります。 利用コードは、次のとおりです。などのp、あなたはdiv要素のような他の要素に値を割り当てることができます

function coding(){ 
    $.ajax({ 
     type: "POST", 
     dataType: "text", 
     url: coding, 
     cache: false, 
     success: function (data) { 
      alert(data); 
     } 
    }) 
} 
coding(); 
+0

を私はそれが出力を持っている上記のコードでは、アラートの必要はありませんが、男はjsの他のコードに追加してそれを返す使用したい場合は、このちょうどアラート結果のPHPコードを完了しました。どうですか? –

+0

@RamilAmrあなたが彼の問題を理解しているので、私はあなたのために投票します。 – hungneox

+0

@KateWintzは私のコメントを見ています[下](http://stackoverflow.com/a/8586085/925829) –

1
function coding(){ 
    $.ajax({ 
     type: "POST", 
     dataType: "text", 
     url: "coding", 
     cache: false, 
     success: function (data) { 
      $("#yourDiv").html(data); 
     } 
    }) 
} 

+0

@Kate Wintz Alert?私はdivにhtmlを追加する代わりに、html()の代わりにappend(data)を使うことができます。 – hungneox

+0

@KateWintz私の魂を読まずにあなたのコメントをコピーしていますか? – hungneox

+0

私は同じですが、私は他のjsコードでこの関数を返すechoの "coding()"としてname関数を使用します。あなたのコードはセレクタで戻り値を追加します。 –

0

まあ、私はあなたがパラメータで渡している変数をコーディングすることを想定していますurlは、CIコントローラのメソッドへの参照です。

そのような場合、あなただけの成功コールバックから待つ必要があります:あなたは、[オブジェクトのXMLDocument]を受信します

$.ajax({ 
     type: "POST", 
     dataType: "text", 
     url: coding, 
     cache: false, 
     success: function (data) { 
      alert(data); 
     } 
    }) 
+0

私は警戒したくありません、上記のコードには出力がありますが、他のjsコードに追加して使用することを望みます。どうですか? –

0

[OK]を、あなたはこのようなコールバック機能を使用する必要があります

function coding(func){ 
    $.ajax({ 
     type: "POST", 
     dataType: "text", 
     url: coding, 
     cache: false, 
     success: function (data) { 
      func(data); 
     } 
    }) 
} 
coding(function(data) 
{ 
    alert(data); 
});