Admin-由于$_请求为空,AJAX响应为0

时间:2017-10-27 作者:Petri

我强烈反对用延迟加载内容来更新现有的客户端站点。目前,问题似乎在管理ajax中。php文件,其中脚本在

if ( empty( $_REQUEST[\'action\'] ) )
  die( \'0\' );
控制台中的错误:GEThttp://www.example.com/wp-admin/admin-ajax.php?lang=en&action=example_frontpage_feed&page=0&next_time=0 net::ERR\\u EMPTY\\u响应

在localhost上一切都正常。如果直接转到浏览器上的url,屏幕上会闪现“此页面不工作”,但随后会显示正确的内容。此外,如果我在admin ajax上更改这一部分。php到任何其他类似的die(1), 懒惰的加载器只运行fin。不过,在我看来,这似乎是一个修复,可能会在以后引入一些维护问题。

以下是ajax请求:

fetchingFeed = true;
$.ajax({
  // url got from php doing basically this:
  // Example[\'ajax_url\'] = admin_url( \'admin-ajax.php?lang=\' . constant(\'ICL_LANGUAGE_CODE\') )
  url: Example.ajax_url,
  dataType: \'json\',
  type: \'get\',
  data: { action: \'example_frontpage_feed\', page: feedPage, next_time: feedNextTime },
  success: function(response) {
    if(response.success) {
      renderFeedPosts(response.posts);
      feedPage = response.nextPage;
      feedNextTime = response.nextTime;
    } else {
      if(response.error) {
        handleFeedLoadError(response.error);
      }
    }

    fetchingFeed = false;
  },
  error: function() {
    handleFeedLoadError();
    fetchingFeed = false;
  }
})
这就是行动

function example_frontpage_feed_ajax() {
  require_once \'inc/fetch-feed.php\';

  $fetch_page = isset($_GET[\'page\']) ? intval($_GET[\'page\']) : 0;
  $fetch_next_time = isset($_GET[\'next_time\']) ? $_GET[\'next_time\'] : null;

  header(\'Access-Control-Allow-Origin: https://www.example.com\');

  example_feed_content($fetch_page, $fetch_next_time);
}

add_action(\'wp_ajax_nopriv_example_frontpage_feed\', \'example_frontpage_feed_ajax\');
add_action(\'wp_ajax_example_frontpage_feed\', \'example_frontpage_feed_ajax\');
编辑:功能example_feed_content 基本上可以收到邮件和电话wp_send_json(blah blah)

1 个回复
SO网友:Behzad

在Ajax函数的末尾,您需要die()函数

function example_frontpage_feed_ajax() {
  require_once \'inc/fetch-feed.php\';

  $fetch_page = isset($_GET[\'page\']) ? intval($_GET[\'page\']) : 0;
  $fetch_next_time = isset($_GET[\'next_time\']) ? $_GET[\'next_time\'] : null;

  header(\'Access-Control-Allow-Origin: https://www.example.com\');

  example_feed_content($fetch_page, $fetch_next_time);

  die(); // This is important in ajax
}

add_action(\'wp_ajax_nopriv_example_frontpage_feed\', \'example_frontpage_feed_ajax\');
add_action(\'wp_ajax_example_frontpage_feed\', \'example_frontpage_feed_ajax\');

结束

相关推荐

AJAX和PHP|通过AJAX从PHP文件中调用特定的PHP函数?

我是AJAX的初学者,所以欢迎参考。是否可以使用AJAX从PHP文件调用特定的PHP函数(而不是运行整个PHP文件)?如果是,如何?背景:我有一个我想要的jQuery按钮,只要点击它,就会调用某个给定PHP文件中的特定PHP函数。我不希望创建一个全新的文件来运行函数体,因为我想从中运行代码的PHP文件是一个大的功能文件(WordPressfunctions.php 文件)。