从PHP页面返回值

时间:2016-06-28 作者:Brad

我创建了一个WordPress页面,其中包含以下简单的PHP代码:

<?php
   $result = array(
       \'State\'   => \'Done\',
       \'ID\'        => 1
   );

   wp_send_json( $result );
?>
当使用Ajax(JQuery)在另一个页面中提交表单时,它会调用此PHP页面,然后在JQuery方法中,我尝试使用以下代码从PHP页面读取返回值:

$( \'#contact_form\' ).bootstrapValidator({
    fields: {
        // ...
    },
    submitHandler: function( formInstance ) {
        $.post( "../send-message", $("#contact_form").serialize(), function( result ) { 
            alert( result );            
        });
    }
}); 
但它实际上返回了整个PHP页面,除了传递的参数外,还使用了WordPress主题代码,如下所示:

enter image description here

我的问题是:How can i return a PHP value from a WordPress page to a JQuery function?

2 个回复
最合适的回答,由SO网友:bravokeyl 整理而成

如何从WordPress页面向JQuery函数返回PHP值?

使用wp_localize_script 创建一个对象并将其传递给JavaScript。

SO网友:Dimon Smus

wp_send_json( $result );
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) {

        wp_die();
}

UPD

将ajax请求与wp一起使用的最佳方法是使用wp本机ajax操作

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

https://codex.wordpress.org/AJAX_in_Plugins

因此,您需要向管理ajax发出post请求。php

wp_enqueue_script( \'frontend-js\', PATH_TO_JS . \'/script.js\' );
wp_localize_script( \'frontend-js\',
            \'wpUser\',
            [
                \'ajaxUrl\'        => admin_url( \'admin-ajax.php\' ),
            ] );

$.post( wpUser.ajaxUrl, { action: \'my_action\' } );