>  Q&A  >  본문

javascript - window.location.href가 메소드에서 즉시 점프하지 않습니다. 해결할 수 있는 방법이 있습니까?

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

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

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

으아아아
欧阳克欧阳克2651일 전2155

모든 응답(7)나는 대답할 것이다

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-26 11:00:15

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

    회신하다
    0
  • 代言

    代言2017-06-26 11:00:15

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

    으아악

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

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

    회신하다
    0
  • 为情所困

    为情所困2017-06-26 11:00:15

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

    으아악

    회신하다
    0
  • 学习ing

    学习ing2017-06-26 11:00:15

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

    으아악

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

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

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

    회신하다
    0
  • ringa_lee

    ringa_lee2017-06-26 11:00:15

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

    으아악

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

    회신하다
    0
  • 某草草

    某草草2017-06-26 11:00:15

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

    으아악

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

    회신하다
    0
  • 三叔

    三叔2017-06-26 11:00:15

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

    회신하다
    0
  • 취소회신하다