【问题标题】:Automatically send post data to php using jquery on page load在页面加载时使用 jquery 自动将发布数据发送到 php
【发布时间】:2012-02-15 13:36:44
【问题描述】:

我正在使用 WordPress 3.3.1 从这一行获取 post_id,

<div class="mppt_postid"><b>'.$post_id.'</b></div>

然后使用下面的 jQuery 脚本在页面加载时使用带有 AJAX 的 $_POST['postid'] 将 post_id 编号发送回 WordPress php 文件,然后将 post_id 编号替换为 php 脚本返回的数据,这是另一个数字(访客人数)。下面的jQuery脚本不起作用,我不知道如何触发.post在页面加载时自动发送数据。

jQuery(document).ready(function() {
    var postid = $('div.mppt_postid').attr('b');
    jQuery.post(mppt_ajax_script.ajaxurl, postid.serialize()
    , function(data) {
        jQuery('.mppt_postid').replaceWith(data);
    }
    );
}); // end ready

【问题讨论】:

  • .post() 等于 .ajax() 并且 .post() 在旧版本的 IE 下不起作用。尝试坚持使用 .ajax()

标签: jquery ajax wordpress


【解决方案1】:

我不明白你为什么需要使用 ajax。帖子 ID 在页面加载期间通过 $post->ID 可用。您可以将其发送到获取并返回访问者数量的函数。

function get_visitor_count($id)
{
   //do your magic to get the visitor info
   return $visitor_count;
}

然后将您的原始代码替换为

<div class="mppt_postid"><b><?php echo get_visitor_count($post->ID); ?></b></div>

如果您需要通过 AJAX 更新计数,请将您的代码更改为

var postid = <?php echo $post->ID; ?>;

【讨论】:

  • 该页面使用 Bat Cache 进行缓存,因此不会在每次页面加载时执行 PHP 函数。
  • 如果该插件是服务器端缓存而不允许在每个页面加载时执行 php,我不会使用该插件。页面加载时间获得的 200 毫秒不足以权衡必须现在使用服务器和客户端脚本来解决这个问题(AJAX 和 jQuery)。您最好使用客户端缓存和 mod_pagespeed 进行服务器端缓存。这允许缓存静态内容并更有效地处理动态内容(您拥有的内容)。
猜你喜欢
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多