首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将php变量正确传递给ajax调用?

如何将php变量正确传递给ajax调用?
EN

Stack Overflow用户
提问于 2018-03-23 14:28:41
回答 2查看 51关注 0票数 0

我有三份文件。我的主php文件,functions.php,然后是js文件。

如何将这个php变量传递给js?下面是我的主PHP文件的代码

代码语言:javascript
复制
function ccss_show_tag_recipes() {

global $post;
global $wp;

$html = '';

$url = home_url( $wp->request );
$path = parse_url($url, PHP_URL_PATH);
$pathFragments = explode('/', $path);
$currentPage = end($pathFragments); //I WANT TO PASS THIS TO MY JS FILE


$term_tags = get_terms('cp_recipe_tags'); 
$term_cats = get_terms('cp_recipe_category');

$recipetype = array();
$recipecat = array();

foreach($term_tags as $term) {
    $recipetype[] = $term->slug;
}

foreach($term_cats as $term) {
    $recipecat[] = $term->slug;
}


if ( in_array( $currentPage , $recipecat  ) ) {

        $html = ccss_load_phases($html,$currentPage);

    }

}

下面是用于css_load_phases()的函数;

代码语言:javascript
复制
function ccss_load_phases($html = '',$currentPage){
     //CODE HERE etc

    $html .= '<div id="btn-wrapper-'.$termid.'" class="btn-wrapper"><a id="'.$termid.'" class="load-more-btn" href="#">Load more recipes</a></div>';    

}

上面的代码是触发Ajax调用,我只能得到按钮id。

以下是AJAX文件代码:

代码语言:javascript
复制
(function($) {
    $(document).on( 'click', 'a.load-more-btn', function( event ) {


    var a = $(this).attr('id'); // I CAN ONLY GET THE ID SINCE IT WAS TRIGGERED BY BUTTON CLICK, how to include $currentPage?

    var button = $(this),
            data = {
            'action': 'ajax_loadmore',
            'termID': a
        };



    event.preventDefault();

        $.ajax({
            url: ajaxloadmore.ajaxurl,
            data: data, 
            type: 'post',
            beforeSend : function () {
                button.text('Loading...'); // change the button text, you can also add a preloader image
            },
            success: function( result ) {

                 //console.log(data.post_gallery_imgs);

                $('#cooked-recipe-list-'+a+' ').append(result).fadeIn();
                c
                //alert( result );
            },

            complete: function() {
                button.remove(); // if no data, remove the button as well
                //$('body').find('a#'+a+'').remove();
            }
        })
    })

})(jQuery);

如何将这个$currentPage php变量传递给我的Ajax/Js文件?所以我可以在这里用它:

代码语言:javascript
复制
add_action( 'wp_ajax_nopriv_ajax_loadmore', 'my_ajax_loadmore' );
add_action( 'wp_ajax_ajax_loadmore', 'my_ajax_loadmore' );

function my_ajax_loadmore() {


    $termID = $_POST['termID']; //ONLY THE BUTTON ID WAS RETRIEVED

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-23 14:41:51

在函数ccss_load_phases中,包含一个隐藏的输入。

代码语言:javascript
复制
function ccss_load_phases($html = '',$currentPage){

    $html .= '<div id="btn-wrapper-'.$termid.'" class="btn-wrapper">
        <a id="'.$termid.'" class="load-more-btn" href="#">Load more recipes</a>
        <input type="hidden" id="currentPage" value="'.$currentPage.'" />
          </div>';    

}

现在,您应该可以通过引用来访问javascript中的内容:

$('#currentPage').val();还是value();

票数 1
EN

Stack Overflow用户

发布于 2018-03-23 14:58:06

我通常将变量值写入隐藏的输入类型,然后使用id或名称访问变量值。

主php文件:

代码语言:javascript
复制
echo "<input type='hidden' value='$currentPage' name='currenPage' id='currentPage'>";

.js文件

代码语言:javascript
复制
 $("#currentPage").val()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49451967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档