2010-12-28 11 views
2

こんにちは、私はここにいくつかの問題点JSのjQueryとAJAX問題

を持っているアラートが未定義のそれの出力を出てきたときに、高速私はこの2日間のXC作ってるんだ助けてくださいコード

function get_char_val(merk) { 
$.ajax({ 
    type: "POST", 
    url: "char_info2.php", 
    data: { name: merk }, 
    dataType: "html", 
    success: function(data){return(data);} 
}); 

} 
alert(get_char_val("str")); 

ある

答えて

2

ajaxコールオプションにasync:false設定パラメータを設定するか、コールバックを使用することができます。非同期を使用して

:偽 -

function get_char_val(merk) 
    { 
     var returnValue = null; 
     $.ajax 
     (
      { 
       type: "POST", 
       async:false, 
       url: "char_info2.php", 
       data: { name: merk }, 
       dataType: "html", 
       success: function(data){returnValue = data;} 
      } 
     ); 
    return returnValue; 
    } 
    alert(get_char_val("str")); 

P.S:AJAXを作ることは、同期呼び出し、賢明ではないことに注意してください。

+0

合意...それに応じて答えを更新しました。 – Chandu

+0

これはかなり悪い習慣と考えられます。なぜなら各Ajaxリクエストは "ブロック"し、実行中にブラウザをフリーズさせるからです。 – jAndy

+0

答えの中の私の注釈をチェックしてください。私たちは同じ時間に提出を押したと思います:) – Chandu

3

get_char_val何も返されません。 successコールバックには、AJAXからのデータを返すために、alert(data)が必要です。

$.ajaxは非同期です。つまり、コールバックが存在する理由は、他のコードと順不同です。

+0

これに追加すると、console.log()のデータがはるかに多くなります。 Firebugをインストールし、より良いデバッグのために警告の代わりに使用してください。 – Mantar

3

お客様のreturn;ステートメントは、に値を返し、success handlerに渡します。このような値を返すことはできません。別のコールバックを呼び出す必要があります。

function get_char_val(merk, cb) { 
    $.ajax({ 
     type: "POST", 
     url: "char_info2.php", 
     data: { name: merk }, 
     dataType: "html", 
     success: function(data){cb.apply(this, data);} 
    }); 
} 

get_char_val("str", function(data) { 
    alert(data); 
}); 
+0

あまりにも多くのコード:/ – Sonny

0

非同期のajax呼び出しを行うので、サーバーの応答は「成功」関数で処理されます。あなたの成功関数の戻り値は役に立たないので、関数内で直接 "data"パラメータを使うべきです。

0

これはうまくいくはずです。このように使用してください。

function get_char_val(merk) { 
var myReturnData= ""; 
$.ajax({ 
    type: "POST", 
    url: "char_info2.php", 
    data: { name: merk }, 
    dataType: "html", 
    success: function(data){myReturnData = data;} 
}); 
return myReturnData; 
} 
alert(get_char_val("str")); 

コードの問題を理解してください。適切な関数の下でreturn文を使用します。

+0

それは動作しません! – mplungjan

+0

うんうん – Sonny