die ()와 함께 관리자 아약스 요청 반환 0


10

그래서 관리 영역에서 AJAX 호출 에이 구성을 사용하고 있습니다 ( :) .

add_action( 'admin_head', 'ajaxPerNgg' );

function ajaxPerNgg(){ ?>
<script type="text/javascript" >
jQuery(document).ready(function() {
    jQuery("#message").remove();
    jQuery("#errore a#attivo").click(
        function(){
            var data = {
                action: 'my_action'
            };
            jQuery.post(ajaxurl, data, function(response) {
                if(response == "attivato")
                    jQuery("#errore a#inattivo").attr("id","completato").html("Attivato");
                else
                    jQuery("#errore a#inattivo").attr("id","attivo").html("Attivalo ora");
            });
        }
    );
});
</script>
<?php }

add_action('wp_ajax_my_action', 'my_action_callback');

function my_action_callback() {
    echo 'attivato';
    die();
}

테스트 코드 일 뿐이지 만 문자열 "attivato"대신 항상 0을 반환합니다. 또한 404 오류없이 아약스 URL을 올바르게 찾습니다.
무엇이 문제입니까?


이 문제를 알아 낸 적이 있습니까? 그렇다면 문제를 해결 한 답변에 의견을 말하거나 수락 할 수 있습니까? 이들 중 아무도 문제를 해결하지 않으며이 경우 해결 , 아래 답변을 추가하시기 바랍니다 수 있을까? 감사합니다!
jmort253

@ jmort253 안녕하세요, 지금 당장 답변 드리겠습니다, 그러나 지금도 여전히이 문제가 있으며 웹 주위에 해결책을 찾지 못했습니다 : ' , 나는 여기에 쓸 것이다;)
Ivano Mercuri

좋아, 여기도 마찬가지야 알아 내면 게시하겠습니다. :) 연락을 유지하십시오.
jmort253

1
wp_ajax_my_action"my_action"부분 의 접미사 인 jQuery 게시물에 사용 된 작업과 일치해야하는 문제를 해결 했습니다. 나는 당신과 일치하는 것을 보았습니다. 그래서 그것은 당신의 문제가 아닙니다. 또한 관리자 페이지에서 작업하고 있습니다.이 작업을 수행하려고합니다. 이 아약스 전화를 걸 때 로그인 했습니까? 아니면 로그 아웃 했습니까?
jmort253

권리. 눈치 채지 못했다! ;)
Rutwick Gangurde

답변:


21

이것도 추가하십시오 : add_action('wp_ajax_nopriv_my_action', 'my_action_callback');. 를 확인하십시오 nopriv.

문제를 해결할 것입니다!


2
"wp_ajax_SUFFIX"접미사가 액션과 일치하도록하여 jQuery 포스트의 액션도 "SUFFIX"가되도록 수정했습니다. 그러나 nopriv를 사용할 필요는 없었습니다. 이것은 운영 페이지에서 발생하는 작업이므로 op의 문제에 대한 답변인지 확실하지 않습니다. 이는 로그인 한 것을 의미합니다. nopriv 핸들러를 등록 할 필요가 없습니다.
jmort253

15

나는 같은 문제가 있었다. 해결책:

add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
add_action('wp_ajax_my_action', 'my_action_callback');

두 가지를 모두 추가하지 않으면 (nopriv 포함 여부와 상관없이) 로그인 모드 또는 로그 아웃 모드에서만 작동합니다. nopriv는 로그 아웃 용이고 다른 하나는 로그인 용입니다.


4

이것이 당신의 문제인지 확실하지 않지만, 나는 단지 "0"의 응답을 얻었고 그것을 알아내는 데 가장 오랜 시간이 걸렸습니다. 이외에도 확인한에서 당신은 넣어 exit또는 die당신의 PHP 함수의 끝에서, 나는 당신이 당신의 넣어야 할 것을 발견 add_action('wp_ajax_...플러그인의 최상위 수준에서 비트. 나는 내 admin_menu고리 안에 중첩되어있어 작동하지 않았습니다. 위의 코드가 최상위 플러그인 PHP 파일의 함수 내부에 포함 된 부분인지 확실하지 않습니다.


1
여기에서도 같은 문제가 있습니다. 코드의 내부 또는 끝에 부분에 아약스 응답을 넣어야하므로 이런 종류의 문제를 해결하는 방법을 잘 모릅니다.
Ari
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.