>웹 프론트엔드 >프런트엔드 Q&A >jQuery의 on 메소드가 Ajax를 실행할 수 없는 이유와 해결책을 분석합니다.

jQuery의 on 메소드가 Ajax를 실행할 수 없는 이유와 해결책을 분석합니다.

PHPz
PHPz원래의
2023-04-17 11:30:29658검색

최근 몇 년 동안 Javascript와 jQuery는 프런트엔드 개발 작업에서 점점 더 중요한 역할을 해왔습니다. jQuery의 기능은 뛰어난 DOM 조작 기능과 CSS 선택기에 반영될 뿐만 아니라 jQuery는 많은 강력한 전역 기능과 이벤트 처리 기능도 크게 제공합니다. 프런트엔드 개발 작업 흐름을 단순화합니다. on() 메소드는 의심할 바 없이 많은 편리함을 제공하지만 이 메소드를 사용하는 데에는 Ajax 요청을 트리거할 수 없는 특별한 경우가 있습니다. 이 문제의 근본 원인과 해결 방법은 아래에서 자세히 소개됩니다. .

on() 메소드 사용법

먼저 on() 메소드 사용법을 알아보겠습니다. on() 메서드는 여러 매개변수를 허용할 수 있으며, 그 중 가장 중요한 매개변수는 이벤트 유형, 즉 이벤트 처리 함수가 바인딩되어야 하는 이벤트를 지정하는 데 사용되는 첫 번째 매개변수입니다.

예를 들어 다음 예에서는 on() 메서드를 사용하여 클릭 이벤트를 바인딩합니다.

$("button").on("click", function(){
    alert("您点击了按钮");
});

위 코드는 버튼을 클릭한 후 프롬프트 상자를 표시하며, 여기서 on() 메소드는 클릭 이벤트를 첫 번째 매개변수로 전달합니다.

물론 on() 메서드는 여러 이벤트를 동시에 바인딩하고(쉼표로 구분) 이벤트 처리 함수를 두 번째 매개변수에 전달할 수도 있습니다. 예:

$("button").on("mouseenter mouseleave", function(){
    alert("您进入/离开按钮区域");
});

위 코드는 버튼의 마우스 이동 및 이동 이벤트를 동시에 처리합니다.

on() 메서드에는 다른 많은 매개변수와 사용법이 있으므로 여기서는 설명하지 않습니다. 자세한 소개는 jQuery 공식 문서를 참조하세요.

on() 메소드가 Ajax 요청을 트리거할 수 없습니까? !

이 기사의 주제로 돌아가서, 다음에 논의할 내용은 on() 메소드가 Ajax 요청을 트리거할 수 없다는 문제입니다. 다음 예를 살펴보겠습니다.

$("button").on("click", function(){
    $.ajax({
        url: "http://www.example.com/api",
        type: "GET",
        success: function(response){
            console.log(response);
        }
    });
});

위 코드는 버튼을 클릭할 때 Ajax 요청을 통해 API에서 데이터를 얻으려고 시도하고, 요청이 성공한 후 콘솔에 응답을 인쇄합니다. 그러나 버튼을 클릭하면 아무 일도 일어나지 않으며 콘솔에 출력도 없다는 것을 알 수 있습니다.

몇 가지 연구와 테스트 끝에 우리는 on() 메소드가 Ajax 요청을 트리거할 수 없다는 결론에 도달했습니다!

on() 메서드는 로드 이벤트를 바인딩할 수 없습니다

그럼 on() 메서드에 이런 문제가 발생하는 이유는 무엇일까요? 그 이유는 on() 메소드가 실제로 DOM 이벤트를 바인딩하여 Ajax 요청을 구현하고 응답 데이터를 처리 함수에 전달하기 전에 먼저 데이터를 DOM 노드에 저장해야 하기 때문입니다. 그러나 jQuery는 모든 노드에서 로드 이벤트를 올바르게 트리거할 수 없으므로 on() 메서드가 Ajax 요청을 트리거하지 못하게 됩니다.

다음 코드로 이를 확인할 수 있습니다.

$("img").on("load", function(){
    console.log("图片加载完毕");
});

위 코드는 이미지 로딩 완료 이벤트를 수신하고 이벤트가 트리거될 때 메시지를 인쇄합니다. 그러나 동적으로 생성된 이미지(예: <img src="http://www.example.com/1.png">)를 로드하려고 하면 이 코드가 작동하지 않고 콘솔에 정보가 출력되지 않는다는 것을 알게 됩니다.

Solution

그렇다면 on() 메소드가 Ajax 요청을 실행할 수 없을 때 어떤 메소드를 사용해야 할까요? 대답은 jQuery의 전역 함수인 $.ajax()를 사용하는 것입니다.

$.ajax() 메서드는 매개변수를 전달하여 다양한 유형의 Ajax 요청을 구현할 수 있는 하위 수준 함수입니다. 예:

$("button").on("click", function(){
    $.ajax({
        url: "http://www.example.com/api",
        type: "GET",
        success: function(response){
            console.log(response);
        }
    });
});

위 코드는 $.ajax() 함수를 직접 호출하고 GET 메서드를 통해 API 데이터를 가져옵니다. 그 밖에도 $.ajax() 함수에는 그 밖에도 다양한 매개변수와 사용법이 있으므로 여기서는 설명하지 않겠습니다. 자세한 소개는 jQuery 공식 문서를 참고하세요.

요약

이상은 jQuery의 on() 메소드가 Ajax 요청을 실행할 수 없는 문제에 대한 자세한 소개와 해결 방법입니다. 모든 분들께 도움이 되기를 바랍니다. 실제 프론트 엔드 개발에서는 실제 상황에 따라 적절한 방법을 선택하고, 좋은 문서와 검색 엔진을 사용하는 데 주의를 기울이고, 기술과 능력을 지속적으로 향상시켜야 합니다.

위 내용은 jQuery의 on 메소드가 Ajax를 실행할 수 없는 이유와 해결책을 분석합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.