javascript - window.location.href がメソッド内ですぐにジャンプしないのですが、解決する方法はありますか?
欧阳克
欧阳克 2017-06-26 10:58:15
0
7
2229

質問: location.href = "../exit.html"; は実行されないのに、window.location.href = 'http://www.baidu.com' が実行されるのはなぜですか;?

getData() の実行を終了する方法はありますか。データの取得に失敗した場合は、../exit.html にジャンプし、gourl() を実行しないでください。 ; 方法はどうですか?

補足:

async: ajax の false は同期リクエストです。 ! ! , これは単なる単純なデモです。実際には、getData() メソッドの背後には多くのロジックがある可能性がありますが、getData() がデータの取得に失敗すると、プログラムは他のメソッドを実行できなくなります。ファイル内で他のメソッドを同時に実行することはできません。 リーリー

欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

全員に返信(7)
女神的闺蜜爱上我

その後、getData メソッドの成功後に gourl をコールバックして、必要な論理処理を実行できます
さらに、$ajax とそれに対応するエラーがあるため、具体的に is_success を判断する方法がわかりません

いいねを押す +0
代言

あなたのコードは、次の 2 つの文を実行するのと同じです:

リーリー

この2つの文を連続して実行すると、以下のアドレスにジャンプします

私の推測では、ブラウザが最初のジャンプにアクセスするのに時間がかかるが、成功する前に 2 番目のジャンプが再び来るため、最初のジャンプを諦めて 2 番目のジャンプを実行します。 URLも同じです。

いいねを押す +0
为情所困

gourl() 関数は前で呼び出すことはできませんが、Ajax ロジックの途中に配置し、if ロジックの後に else{gourl();}
を追加する必要があります。 リーリー

いいねを押す +0
学习ing

質問者のコードは次のように理解できます:

リーリー

コード内に 2 つの連続した location.href がある場合、後続のジャンプが実行されます。この質問の対象者は自分でそれを試すことができます。

さらに、ajax は非同期であるため、サブジェクトは、success にも if(!is_success)写到ajax中的error中去,或者写到success中的else判断中,否则无论ajax是否成功,都会跳转。gourl() を書き込む必要があります。

さらに、このように ajax を直接使用すると、クロスドメイン エラーが発生します。クロスドメインの問題を解決するには、プロキシまたは他の方法を使用することをお勧めします。

いいねを押す +0
ringa_lee

携帯電話のコード、これってどういうことですか?

リーリー

主に jQ の Promise を使用し、すべて非同期で記述され、成功した Ajax のコールバックはすべて Deferred の Done に配置され (複数ある場合は配列として記述することもできます)、その後、Ajax の Done で直接ステータスを与えるだけです。

いいねを押す +0
某草草

コールバック判定にgetDatagourl有执行的关系,要么把gourlを配置しているため、非同期での使用に適しています。
被写体とシンクロしていれば大丈夫

リーリー

ここで Gourl を直接制御して実行できますか?

いいねを押す +0
三叔

コードロジックに問題がある可能性があります。Ajax は非同期です。 gourl(); この関数はその場所で呼び出すべきではありません。これは、ajax リクエストの成功または失敗のコールバックで呼び出すことができます。
リクエストを見ると、正常に呼び出されるはずです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート