在WordPress前端使用AJAX加载php文件

时间:2020-02-07 作者:Vladimir Radyshev

第一次尝试AJAX请求时遇到了问题。我想在Wordpress站点的按钮点击上加载一个php文件。经过研究,我得到了以下代码:

指数php文件:

<button id="ajaxbtn">Ajax</button>
<div id="ajax">Some Text</div>
ajax。php文件(我要加载的文件):

<?php echo "Hello!" ?>
功能。php文件:

add_action( \'wp_enqueue_scripts\', \'myajax_data\', 99 );
function myajax_data(){

   wp_localize_script(\'menu_toggle\', \'myajax\', 
     array(
       \'ajax_url\' => admin_url(\'admin-ajax.php\')
     )
   );  

}

add_action(\'wp_ajax_tablo\', \'tablo\');
add_action(\'wp_ajax_nopriv_tablo\', \'tablo\');

function tablo() {

  // Grab php file output from server
  ob_start();
  include(get_template_directory_uri() . \'/ajax.php\');
  $result[\'content\'] = ob_get_contents(); 
  wp_send_json($result);
}
menu\\u切换。js文件(带有ajax代码的js文件):

$("#ajaxbtn").click(function () {
  $.ajax({
    type : \'post\',
    dataType : \'json\',
    url : myajax.ajax_url,
    data : {action: \'tablo\'},
    success: function(response) {
      //load the fetched php file into the div
      console.log(response);
      alert(response);
      $(\'#ajax\').append("hello"); 
      $(\'#ajax\').load(response.content);
    }
  });
});
我真的可以alert(response);通知[对象对象],以及$(\'#ajax\').append("hello"); 显示,这意味着ajax连接正确,ajax请求工作正常。但是$(\'#ajax\').load(response.content); 在#ajax div中加载相同的整个索引页,而不是加载ajax的内容。我真正想要的php文件。我可能在function tablo() 函数的。php文件,或在ajax代码中的menu\\u切换。js文件。这个console.log(response); 输出量惊人。有人能帮我做这个吗?

1 个回复
最合适的回答,由SO网友:Chetan Vaghela 整理而成

尝试使用get_template_part() 作用使用ob\\u end\\u clean()清理输出缓冲区并关闭输出缓冲。我有用处html() 附加数据的步骤jQuery(\'#ajax\').html(response.content);. 我已经测试过了,工作很好。

jquery:

jQuery("#ajaxbtn").click(function () {
    jQuery.ajax({
      type : \'post\',
      dataType : \'json\',
      url : myajax.ajax_url,
      data : {action: \'tablo\'},
      success: function(response) {
        jQuery(\'#ajax\').html(response.content);
      }
    });
  });
ajax功能:

add_action(\'wp_ajax_tablo\', \'tablo\');
add_action(\'wp_ajax_nopriv_tablo\', \'tablo\');
function tablo() {
  // Grab php file output from server
  ob_start();
  get_template_part( \'ajax\' );
  $result = ob_get_contents();
  ob_end_clean();
  $return = array(\'content\' => $result);
  wp_send_json($return);
  wp_die();
}

相关推荐

为什么wp_ajax挂钩不起作用?

我需要使用POST方法从Ajax表单执行Php函数。有没有其他方法代替ajax挂钩?挂钩不执行。始终返回0。怎么了?这是我的ajax。js公司\'use strict\'; const url = test.ajaxUrl; const data = { action: \'ajax_request\', username: \'example\' }; async function Start(url, data) {&#x