質問: location.href = "../exit.html";
は実行されないのに、window.location.href = 'http://www.baidu.com' が実行されるのはなぜですか;
?
getData() の実行を終了する方法はありますか。データの取得に失敗した場合は、
../exit.html にジャンプし、
gourl() を実行しないでください。 ; 方法はどうですか?
async: ajax の false は同期リクエストです。 ! ! , これは単なる単純なデモです。実際には、getData() メソッドの背後には多くのロジックがある可能性がありますが、getData() がデータの取得に失敗すると、プログラムは他のメソッドを実行できなくなります。ファイル内で他のメソッドを同時に実行することはできません。
リーリー
その後、getData メソッドの成功後に gourl をコールバックして、必要な論理処理を実行できます
さらに、$ajax とそれに対応するエラーがあるため、具体的に is_success を判断する方法がわかりません
あなたのコードは、次の 2 つの文を実行するのと同じです:
リーリーこの2つの文を連続して実行すると、以下のアドレスにジャンプします
私の推測では、ブラウザが最初のジャンプにアクセスするのに時間がかかるが、成功する前に 2 番目のジャンプが再び来るため、最初のジャンプを諦めて 2 番目のジャンプを実行します。 URLも同じです。
gourl() 関数は前で呼び出すことはできませんが、Ajax ロジックの途中に配置し、if ロジックの後に
else{gourl();}
を追加する必要があります。 リーリー
質問者のコードは次のように理解できます:
リーリーコード内に 2 つの連続した location.href がある場合、後続のジャンプが実行されます。この質問の対象者は自分でそれを試すことができます。
さらに、ajax は非同期であるため、サブジェクトは、success にも
if(!is_success)
写到ajax中的error中去,或者写到success中的else判断中,否则无论ajax是否成功,都会跳转。gourl()
を書き込む必要があります。さらに、このように ajax を直接使用すると、クロスドメイン エラーが発生します。クロスドメインの問題を解決するには、プロキシまたは他の方法を使用することをお勧めします。
携帯電話のコード、これってどういうことですか?
リーリー主に jQ の Promise を使用し、すべて非同期で記述され、成功した Ajax のコールバックはすべて Deferred の Done に配置され (複数ある場合は配列として記述することもできます)、その後、Ajax の Done で直接ステータスを与えるだけです。
コールバック判定に
リーリーgetData
和gourl
有执行的关系,要么把gourl
を配置しているため、非同期での使用に適しています。被写体とシンクロしていれば大丈夫
ここで Gourl を直接制御して実行できますか?
コードロジックに問題がある可能性があります。Ajax は非同期です。 gourl(); この関数はその場所で呼び出すべきではありません。これは、ajax リクエストの成功または失敗のコールバックで呼び出すことができます。
リクエストを見ると、正常に呼び出されるはずです。