しかし、どういうわけか、変数データをいたずらに入れると、データの内容がありません。
function cookie() {
var naughty = 'aaa';
$.post('/cookie', function(data) {
naughty = data;
});
alert(naughty); // sends "aaa"
}
なんで?
更新:ありがとう!$ .post()が非同期であるため、alert(naughty)が実行されてから、データが入力されます。
今、私はサブ質問があります:非同期をオフにすると、関数cookie()のみが実行を延期しますか、それともAJAXが完了するまでブラウザエンジン全体がフリーズしますか?
更新2:はい、@ Kevin B、あなたは正しいです、いたずらは決して満たされません...私は最初のコードサンプルで間違いを犯しました。とにかくすべての答えが2番目のコードサンプルだけで有効であることが幸運です:-)
@Kevin Bが指摘したように、async=falseはjQuery1.8で減価償却されます。そして、リクエストが完了するまでブラウザをフリーズします...
サブ質問#2:このAJAXリクエストの後、cookie()内にさらにコードがあります。それで、async = falseでブラウザ全体をフリーズせずに、AJAXが完了するまでcookie()の実行を何とか一時停止できますか?または、このアイデアをコーディングする新しい方法(complete / successコールバックを使用)を見つける必要がありますか?
最後の編集:私が欲しいのはASYNC:FALSEであることに気づきました...だから私は単にそれを使用しました。ところで。ASYNC:FALSEはjQueryから削除されません!特別な種類のユースケースのみが...