私は過去にいくつかのjQueryをやったことがありますが、私は完全にこれにこだわっています。私は同期Ajax呼び出しを使用することの賛否両論について知っています、しかしここでそれは必要とされるでしょう。
リモートページはロードされます(firebugで制御されます)が、リターンは表示されません。
関数が正しく戻るようにするにはどうすればいいですか?
function getRemote() {
var remote;
$.ajax({
type: "GET",
url: remote_url,
async: false,
success : function(data) {
remote = data;
}
});
return remote;
}
同期要求をしているので、それはあるべきです
function getRemote() {
return $.ajax({
type: "GET",
url: remote_url,
async: false
}).responseText;
}
例 - http://api.jquery.com/jQuery.ajax/#example-
注意:asyncプロパティをfalseに設定するのは推奨されなくなり、その過程で削除された( link )これを使用すると、FirefoxやChromeを含む多くのブラウザがすでにコンソールに警告を表示し始めています。
クロム:
メインスレッド上の同期XMLHttpRequestは、エンドユーザーのエクスペリエンスに悪影響を与えるため、推奨されません。詳細については、 https://xhr.spec.whatwg.org/ を確認してください。
Firefox:
メインスレッドでの同期XMLHttpRequestは、エンドユーザーのエクスペリエンスに悪影響を与えるため、推奨されません。より多くの助けを求めて http://xhr.spec.whatwg.org/
あなたは間違ってajax関数を使っています。同期しているので、データをインラインで返します。
var remote = $.ajax({
type: "GET",
url: remote_url,
async: false
}).responseText;
そのURLはどのくらい離れていますか。同じドメインからですか?コードは問題ないようです
これを試して
$.ajaxSetup({async:false});
$.get(remote_url, function(data) { remote = data; });
// or
remote = $.get(remote_url).responseText;
function getRemote() {
return $.ajax({
type: "GET",
url: remote_url,
async: false,
success: function (result) {
/* if result is a JSon object */
if (result.valid)
return true;
else
return false;
}
});
}