2013-10-07 62 views
0

我有一个function.php文件,使json请求的功能。这是怎么了调用这个函数:如何在不冲突的情况下运行AJAX请求?

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()函数。我怎样才能做到这一点 ?

+0

post your loadmore();功能和确切的错误,你正在得到 – codepixlabs

+0

@wordpresser这里是loadmore函数。它工作正常,没有附加条件。另外,只有在用户点击按钮时才能调用此功能。我通过Js覆盖了它。 –

+0

我似乎无法找到实际的错误,但你是否遵循适当的步骤,使WordPress的Ajax工作? – codepixlabs

回答

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 
+0

非常有帮助。谢谢。 –

相关问题