javascript - window.location.href가 메소드에서 즉시 점프하지 않습니다. 해결할 수 있는 방법이 있습니까?
欧阳克
欧阳克 2017-06-26 10:58:15
0
7
2234

질문: 왜 실행되지 않나요 location.href = "../exit.html";, 而是执行了 window.location.href = 'http://www.baidu.com';?

getData(), 如果获取数据失败,则跳转到 ../exit.html, 不再执行 gourl(); 메소드를 실행할 수 있는 방법이 있나요?

보충: ajax里面的 async: false 是同步请求!!! 이것은 단순한 데모일 뿐입니다. 실제로 getData() 메서드 뒤에는 많은 논리가 있을 수 있지만 getData()가 데이터를 가져오는 데 실패하면 프로그램에서 다른 메서드를 실행할 수 없습니다. 같은 파일 안에는 다른 메서드가 없을 수도 있습니다.

으아아아
欧阳克
欧阳克

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

모든 응답(7)
女神的闺蜜爱上我

그러면 getData 메소드 성공 후 gourl을 다시 호출하여 원하는 논리적 처리를 수행할 수 있습니다
게다가 $ajax와 해당 오류가 있기 때문에 is_success를 구체적으로 판단하는 방법을 모르겠습니다

代言

귀하의 코드는 다음 두 문장을 실행하는 것과 같습니다.

으아악

이 두 문장을 연속으로 실행하면 다음 주소로 점프하게 됩니다

제 생각에는 브라우저가 첫 번째에 접근하는데 시간이 걸리는 것 같은데, 성공하기도 전에 두 번째 점프가 다시 오기 때문에 첫 번째 점프를 포기하고 두 번째 점프를 실행합니다. URL이 같습니다.

为情所困

gourl() 함수는 앞에 호출할 수 없지만 Ajax 로직 중간에 배치해야 하며 if 로직 뒤에 else{gourl();}
를 추가해야 합니다.

으아악
学习ing

질문자의 코드는 다음과 같이 이해할 수 있습니다.

으아악

코드에 두 개의 연속된 location.href가 있으면 후속 점프가 실행됩니다. 이 질문의 주제는 직접 시도해 볼 수 있습니다.

그리고 ajax는 비동기식이기 때문에 성공하려면 주체도 if(!is_success)写到ajax中的error中去,或者写到success中的else判断中,否则无论ajax是否成功,都会跳转。gourl()라고 써야 합니다.

또한, 이와 같이 ajax를 직접 사용하는 경우에는 크로스 도메인 오류가 발생하므로 크로스 도메인 문제를 해결하려면 프록시나 다른 방법을 사용하는 것이 좋습니다.

ringa_lee

휴대폰번호, 이게 말이 되나요?

으아악

주로 비동기식으로 작성된 jQ의 promise를 사용하면 ajax의 모든 성공적인 콜백은 deferred의 완료에 배치되고(여러 개가 있는 경우 배열로 작성할 수도 있음) ajax의 완료에 직접 상태를 제공합니다.

某草草

콜백 판단에 getDatagourl有执行的关系,要么把gourl가 배치되므로 비동기식 사용에 적합할 수 있습니다.
주제와 싱크로율이면 괜찮습니다

으아악

Gourl을 여기서 직접 제어해서 실행할 수 있나요?

三叔

Ajax는 비동기식이므로 코드 논리에 문제가 있을 수 있습니다. gourl(); 이 함수는 해당 위치에서 호출되어서는 안 됩니다. Ajax 요청의 성공 또는 실패 콜백에서 호출될 수 있습니다.
귀하의 요청을 살펴보면 성공적으로 호출되어야 합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿