질문: 왜 실행되지 않나요 location.href = "../exit.html";
, 而是执行了 window.location.href = 'http://www.baidu.com';
?
getData()
, 如果获取数据失败,则跳转到 ../exit.html
, 不再执行 gourl();
메소드를 실행할 수 있는 방법이 있나요?
보충: ajax里面的 async: false 是同步请求!!!
이것은 단순한 데모일 뿐입니다. 실제로 getData() 메서드 뒤에는 많은 논리가 있을 수 있지만 getData()가 데이터를 가져오는 데 실패하면 프로그램에서 다른 메서드를 실행할 수 없습니다. 같은 파일 안에는 다른 메서드가 없을 수도 있습니다.
女神的闺蜜爱上我2017-06-26 11:00:15
그러면 getData 메소드 성공 후 gourl을 다시 호출하여 원하는 논리적 처리를 수행할 수 있습니다
게다가 $ajax와 해당 오류가 있기 때문에 is_success를 구체적으로 판단하는 방법을 모르겠습니다
代言2017-06-26 11:00:15
귀하의 코드는 다음 두 문장을 실행하는 것과 같습니다.
으아악이 두 문장을 연속으로 실행하면 다음 주소로 점프하게 됩니다
제 생각에는 브라우저가 첫 번째에 접근하는데 시간이 걸리는 것 같은데, 성공하기도 전에 두 번째 점프가 다시 오기 때문에 첫 번째 점프를 포기하고 두 번째 점프를 실행합니다. URL이 같습니다.
为情所困2017-06-26 11:00:15
gourl() 함수는 앞에 호출할 수 없지만 Ajax 로직 중간에 배치해야 하며 if 로직 뒤에 else{gourl();}
를 추가해야 합니다.
学习ing2017-06-26 11:00:15
질문자의 코드는 다음과 같이 이해할 수 있습니다.
으아악코드에 두 개의 연속된 location.href가 있으면 후속 점프가 실행됩니다. 이 질문의 주제는 직접 시도해 볼 수 있습니다.
그리고 ajax는 비동기식이기 때문에 성공하려면 주체도 if(!is_success)
写到ajax中的error中去,或者写到success中的else判断中,否则无论ajax是否成功,都会跳转。gourl()
라고 써야 합니다.
또한, 이와 같이 ajax를 직접 사용하는 경우에는 크로스 도메인 오류가 발생하므로 크로스 도메인 문제를 해결하려면 프록시나 다른 방법을 사용하는 것이 좋습니다.
ringa_lee2017-06-26 11:00:15
휴대폰번호, 이게 말이 되나요?
으아악주로 비동기식으로 작성된 jQ의 promise를 사용하면 ajax의 모든 성공적인 콜백은 deferred의 완료에 배치되고(여러 개가 있는 경우 배열로 작성할 수도 있음) ajax의 완료에 직접 상태를 제공합니다.
某草草2017-06-26 11:00:15
콜백 판단에 getData
和gourl
有执行的关系,要么把gourl
가 배치되므로 비동기식 사용에 적합할 수 있습니다.
주제와 싱크로율이면 괜찮습니다
Gourl을 여기서 직접 제어해서 실행할 수 있나요?
三叔2017-06-26 11:00:15
Ajax는 비동기식이므로 코드 논리에 문제가 있을 수 있습니다. gourl(); 이 함수는 해당 위치에서 호출되어서는 안 됩니다. Ajax 요청의 성공 또는 실패 콜백에서 호출될 수 있습니다.
귀하의 요청을 살펴보면 성공적으로 호출되어야 합니다.