1

私はjqueryを初めて使用し、グリッチに遭遇しました。基本的に、php ファイルにアクセスしてカレンダーの日付チェッカーの配列を返す非常に基本的なクエリ スクリプトがあります。

そこにアラートがあり、配列が正しく送信されていることを示していますが、それに対して動作するavailableDates変数を取得できません。

これがjqueryスクリプトです

$.get("sql.php",function(data,status)

{
/* alert("Data: " + data + "\nStatus: " + status); */
result = data;
return result;
});

var unavailableDates = result; /*result is an array. In this format it works, var unavailableDates = ["1-1-2013"]; */

アクセスしている基本的なphpスクリプトは次のとおりです。

<?

$row[0] = "01-01-2013";
$row[1] = "02-01-2013";
$row[2] = "03-01-2013";

echo $row;

?>
4

3 に答える 3

3

AJAX は非同期です。

$.get()これは、 orなどを使用する関数から何も返すことができないことを意味します$.post()。代わりに、次のようにします。

$.get("sql.php",function(data,status)
{
    /* alert("Data: " + data + "\nStatus: " + status); */
    result = data;
    var unavailableDates = result;
});

そして関数$.ajaxCompleteでは、 を使って仕事を与えunavailableDatesます。

于 2012-12-30T05:08:12.277 に答える
2

他の人はあなたの JS の非同期問題に注目していますが、配列をサーバーからクライアントに送信するには、PHP からの出力も JSON である必要があります。

echo json_encode( $row);

dataTypeに引数を追加して$.get、jQuery がデータを JSON として解析することを認識できるようにします。

$.get("sql.php",function(data,status){
    /* consume array here since AJAX is asychronous*/
     $.each(data, function(i, item){
          doSomething( item);
     })
},'json');

EDIT:すでにdataType$.getJSON()を含むショートカットメソッドを使用することもできますjson

于 2012-12-30T05:30:25.270 に答える
2

$.get非同期です。コード行:

var unavailableDates = result;

get完了前に実行され、コールバックが実行されます。

于 2012-12-30T05:07:51.060 に答える