0

我在functions.php 文件中有一个发出json 请求的函数。这就是我调用这个函数的方式:

define('IS_AJAX_REQUEST', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
if (IS_AJAX_REQUEST){
loadmore();
}

上面的代码工作得很好,但问题是它与其他 AJAX 请求冲突,例如,当我尝试上传图像时,我看到错误消息说无法执行 loadmore()。

我尝试了以下但没有奏效。

if (IS_AJAX_REQUEST && is_page()){
loadmore();
}

+

if (is_page()){
if (IS_AJAX_REQUEST){
loadmore();
   }
}

+

if (IS_AJAX_REQUEST){
if (is_page()) loadmore();  }
}

这是loadmore函数

function loadmore(){

  header('Content-type: application/json');

 echo json_encode (array ('rsp'=>'ok',

        'payload'=> DrawPostList($_GET['tribe'], $_GET['offset']),

        'lionly'=> true,

        'tribe'=> $_GET['tribe'],

        'offset'=> $_GET['offset']+20));

 exit;
}

我只想在查看页面时执行 loadmore() 函数。我怎样才能做到这一点 ?

4

1 回答 1

0
<?php
add_action( 'wp_head', 'my_action_javascript' );

function my_action_javascript() {

    is_page() { // load script only on pages 
?>
        <script type="text/javascript" >
        function loadmore() {

            var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
            jQuery.ajax({
                    type: "POST",
                    url: ajaxurl,
                    data: { action : 'loadmore_trigger', var1 : 'test', var2 : 'one more' }
            })
        }.done(function( response ) {
            alert(response);

        }
        </script>
        <?php
    }
}


add_action('wp_ajax_nopriv_loadmore_trigger', 'loadmore_trigger');
add_action('wp_ajax_loadmore_trigger', 'loadmore_trigger');

function loadmore_trigger(){

echo "<pre>";
print_r($_POST);
exit;

}
?>

<input type="submit" onclick="loadmore(); return false;"> // make ajax call on click of submit button
于 2013-10-09T16:27:24.830 回答