WordPress가 Ajax 응답에 0을 추가하는 이유는 무엇입니까?


16

exit()또는로 Ajax 처리 기능을 종료하지 않는 한 die()Ajax 기능은 원하는 정확한 출력을 수신하지만 다음을 수행합니다 0.

왜 그런 일이 일어나는지 아십니까?

그것은 그런 것입니까, 아니면 고칠 수 있습니까?

add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');

function get_homepage(){
    echo "get_homepage ->";
    exit();
}

플러그인 에서 AJAX를 읽었 지만 왜 필요한가요?


워드 프레스에서 로그 아웃 한 경우에도 (0의 추가) 발생합니까?
murdaugh

예, WordPress에 로그인하지 않은 경우에도 마찬가지입니다.
Radek

답변:


31

의 기본 응답 admin-ajax.php

die( '0' );

... 자신의 추가하여 wp_die()또는 exit()또는 die()원하는 콘텐츠를 방지에게에서 기본 응답 복귀 후 admin-ajax.php뿐만 아니라 반환합니다.

또한 일반적으로 아약스 호출이 성공했음을 의미합니다.

궁극적으로 귀하의 질문에 대답하기 위해이 방법으로 작동해야합니다. 콘텐츠를 반환 한 후 종료하여 수행하는 작업이 올바른 것입니다.


설명 주셔서 감사합니다. 그래서 die ()를 사용하거나 0을 위해 ajax 내부를 점검하여 모든 것이 정상임을 알 수 있습니까?
Radek

2
컨텐츠 / 데이터를 에코 한 후 die()또는 사용하십시오 exit(). success/completeajax 메소드 의 콜백 함수에서 데이터를 조작하고이를 사용하여 DOM을 채울 수 있습니다. 데이터 무결성을 확인하기 위해 추가 오류 검사를 수행 할 수도 있습니다. 출력 전에 PHP 콜백 함수에서 오류 검사를 수행 할 수도 있습니다. 응답을 반환 한 후 기본적으로 종료하면 응답을 얻지 못하게 0됩니다. 그런데 0응답을 받았다고해서 아약스 호출이 100 % 성공한 것은 아닙니다. 그러나 출력을 검사 할 때 쉽게 알 수 있습니다.
Adam

1
wp_die()2.0.4
thrillcode

이 과정 노출 필요가없는 @thrillcode wp_die사용 후 말했다 과정에 끼어 수있는 다른 플러그인이나 테마 코드에를 dieexit괜찮습니다. 코드를 OSS 또는 다른 방식으로 릴리스하려는 경우 다른 사람들과 코드를 잘 재생 해야하는 wp_die경우 더 바람직합니다.
Adam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.