programing

워드프레스 아약스는 왜 죽을까 ('0')

testmans 2023. 10. 22. 19:43
반응형

워드프레스 아약스는 왜 죽을까 ('0')

저는 제 기능에 다음을 추가했습니다.php 파일:

add_action('wp_ajax_send_email', 'send_email_callback');
add_action('wp_ajax_nopriv_send_email', 'send_email_callback');

그래서 다음 콜백 기능을 추가했습니다.

send_email_callback()
{
//do some processing
 echo json_encode(array('response'=>'Ya man it worked.'));
//return control back to *-ajax.php
}

이것이 나의 자바스크립트에 반환되는 것입니다.

{"response":"Ya man it worked."}0

그럼 당연히 $.parseJ에 도달하면SON(msg) line I get Uncaught SyntaxError:예기치 않은 개수입니다.

  var request = $.ajax({
            url: "/wp-admin/admin-ajax.php",
            method: "POST",
            data: { action : 'send_email', P : container },
            dataType: "html"
        });

        request.done(function( msg ) {

           var obj = $.parseJSON( msg );
            console.log(obj.response);

        });

        request.fail(function( jqXHR, textStatus ) {
            alert( "Request failed: " + textStatus );
        });
    });

그럼 이 0은 어디서 오는 겁니까?관리자 - ajax php 97번에 쓰여있습니다

// Default status
die( '0' );

이게 왜 여기 있는 거지, 내가 왜 다이('0') 선에 도달하는 거지?제 반응을 망치지 않게 그냥 죽어야 하는 거 아닌가요?

이 문제를 해결할 수 있는 유일한 방법은 admin-ajax.php를 수정하거나 내 send_email_callback() 기능이 끝날 때 단순히 die()하는 것입니다.

WordPress AJAX 액션에서는 다음과 같은 작업을 수행하면 안 됩니다.return반응은 그렇지만,echo응답과 부름die네 자신.WordPress는 콜백 중 하나가 실행을 죽일 때까지 모든 AJAX 등록 콜백을 계속 호출할 것이며, 마지막 콜백은 다음과 같이 응답하여 사망할 것입니다.0.

플러그인의 WordPress Codec AJAX 예제

<?php 

add_action( 'wp_ajax_my_action', 'my_action_callback' );

function my_action_callback() {
    global $wpdb; // this is how you get access to the database

    $whatever = intval( $_POST['whatever'] );

    $whatever += 10;

        echo $whatever;

    wp_die(); // this is required to terminate immediately and return a proper response
}

언급URL : https://stackoverflow.com/questions/30178610/why-does-wordpress-ajax-die0

반응형