我在WordPress网站上,在single.PHP的循环内,是一个select标签,其中的选项是通过自定义查询返回的当前类别的帖子.

在更改所选选项时,我有许多javascript函数运行良好,但它们中的最后一个函数(函数f_next-prevIoUs),似乎不起作用.

此功能的目的是更新下一个和上一个链接而不重新加载页面.

相对于我的模板中的导航链接(下一个和上一个)的代码运行良好,并在上面:

<div id="nav-above" class="navigation">

<div class="nav-prevIoUs"><?PHP prevIoUs_post_link( '%link','<img height="34" src="' . get_bloginfo("template_directory") . '/images/prevIoUs.png" />' ); ?></div>

<div class="nav-next"><?PHP next_post_link( '%link','<img height="34" src="' . get_bloginfo("template_directory") . '/images/next.png" />' ); ?></div>

</div><!-- #nav-above -->

这个函数的javascript代码是:

function f_next-prevIoUs(id)
{
       $.ajax({  
       cache: true,type: "GET",timeout: 5000,url: 'wp-content/themes/twentyten/pages/next-prevIoUs.PHP?p='+id,success: function(msg)  
        {  

    $('#nav-above').html(msg);

        },error: function(msg)  
        {  
           alert("Your browser broke!");
                return false;
        }  
});

}

文件next-prevIoUs.PHP的内容是:

<?PHP
$p=$_GET['p']; 
require( '../../../wp-load.PHP' );



$my_query = new WP_Query();
$my_query->query(array( 'post__in' => array($p)));

if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post();  ?>


<div class="nav-prevIoUs"><?PHP prevIoUs_post_link( '%link','<img height="34" src="' . get_bloginfo("template_directory") . '/images/prevIoUs.png" />' ); ?></div>
<div class="nav-next"><?PHP next_post_link( '%link','<img height="34" src="' . get_bloginfo("template_directory") . '/images/next.png" />' ); ?></div>

<?PHP

endwhile;
endif;

?>

在通过给p参数赋值来测试这个PHP文件时,它在浏览器中给出了逻辑结果. Jquery和函数脚本都包含在内,我网站上的所有AJAX都可以.我在这项工作中缺少什么?

更新:
请注意,负责触发AJAX调用的single.PHP文件部分是:

<form method="post" action="">  

    <select class="select2"  name="" id="" >
    <option value="<?PHP the_ID();?>"><?PHP the_title();?></option>

    <?PHP 
global $post;
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$myposts = get_posts("paged=$paged&category=4");

foreach($myposts as $post) :?>

        <option value="<?PHP the_ID();?>"><?PHP the_title();?></option>

        <?PHP endforeach;
        wp_reset_postdata(); ?> 

        </select>
        </form>

解决方法

首先,我想要注意的是,我在问题中提到的方法很糟糕,根据几乎在教程中谈论有关wordpress的AJAX.所以我决定根据hakre的建议和他的链接来改变它: http://codex.wordpress.org/AJAX_in_Plugins#Ajax_on_the_Viewer-Facing_Side.

换句话说,对我来说最好的方法是使用wp-admin / admin-ajax.PHP在wordpress中使用内置的AJAX.应将AJAX请求定向到此文件.我知道文件名的“admin”部分有点误导.但是前端(查看方)和管理面板中的所有请求都可以在admin-ajax.PHP中处理,具有很多好处,特别是对于安全性.

步骤是:

1.提交AJAX请求的JavaScript代码应如下所示:

$(document).ready(function() {
        $('.select2').change(function(e) {
    e.preventDefault();

    var v = $('.select2 option:selected').val(); 


            $.ajax({
                type: "GET",url: "wp-admin/admin-ajax.PHP",// check the exact URL for your situation
                dataType: 'html',data: ({ action: 'nextPrevIoUs',id: v}),success: function(data){

                $('#nav-above').html(data);

                },error: function(data)  
                {  
                alert("Your browser broke!");
                return false;
                }  

            }); 

    }); 
});

请注意,在放置JS脚本时应该尊重wordpress的要求(通常在wp-footer()之前的footer.PHP中)

2-处理行动:

在您主题的functions.PHP中(或直接在您的插件文件中),添加:

add_action('wp_ajax_nextPrevIoUs','nextPrevIoUs');
add_action('wp_ajax_nopriv_nextPrevIoUs','nextPrevIoUs');

并在同一个文件中定义nextPrevIoUs回调函数,如下所示:

function nextPrevIoUs() {

$p= $_GET['id'];
$my_query = new WP_Query();

$my_query->query(array( 'post__in' => array($p)));

if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?>



 <div class="nav-prevIoUs"><?PHP prevIoUs_post_link( '%link','<img height="34" src="' . get_bloginfo("template_directory") . '/images/next.png" />' ); ?></div>

<?PHP endwhile;
endif;                  

wp_reset_query();

die();

}

不要忘记模具功能,这是强制性的.

有关wordpress中AJAX的更多详细信息,Google首页教程很好.

javascript – 通过AJAX动态更改WordPress中的导航链接(下一个和上一个)的更多相关文章

  1. wordpress添加Html5的表单验证required方法小结

    这篇文章主要介绍了wordpress添加Html5的表单验证required方法小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. iOS设备上的Safari正在加载损坏的图像 – WordPress网站

    有问题的图像是JPEG,我把它们缩小到更小的尺寸.有问题的WordPress网站是响应式的,当我使用移动网络加载网站时就会发生这个问题.无线方面,它没有问题,但在3G/4G上,随机加载的图像,一些被破坏,图像交换位置,所以所有的css和js似乎搞砸了.我正在使用W3缓存来提高速度,但没有任何帮助.有些图像是半灰色,黑色,有时看起来有点破损.这只发生在带有safari浏览器的iOS设备上.其他人面临同样的问题?

  3. ios – AFNetworking / NSURLConnection接收NSPOSIXErrorDomain代码= 9“操作无法完成.坏文件描述符“

    有人在他们的AFNetworking操作中遇到这个错误吗?此外,如果我真的想要,如何故意关闭这个文件描述符?

  4. ios – 使用没有映射到POST对象的RestKit处理POST响应

    我有一个情况,我正在做一个对象的发布,但RESTAPI的响应不是要发布的对象的JSON表示形式.这还有别的东西.是否可以处理这个?即使它是JSON响应的字典表示法?解决方法我只是为您的回应创建一个新对象,并将您的回复映射到该对象.对象映射叙对象管理器执行

  5. 应用程序关闭时的iOS任务

    我正在构建一个应用程序,通过ajax将文件上传到服务器.问题是用户很可能有时不会有互联网连接,并且客户希望在用户重新连接时安排ajax调用.这可能是用户在离线时安排文件上传并关闭应用程序.应用程序关闭时可以进行ajax调用吗?

  6. swift发起http post请求 with swifthttp包

    完毕后,即完成了cocoapods的安装和配置;下边介绍使用。利用xcode新建项目,项目建立完毕后,打开终端,并进入到项目的根目录下,输入:touchPodfileopen-ePodfile然后在编辑器中输入source'https://github.com/CocoaPods/Specs.git'platform:ios,'8.0'use_frameworks!pod'SwiftHTTP','~>0.9.2'保存退出,然后在终端输入:podinstall这是cocoapods会自动下载并配置依赖,折腾

  7. swift http post/get/delete/put

    Swift中的HTTP请求iOS开发中大部分App的网络数据交换是基于HTTP协议的。这个库通过封装NSURLSession,提供了GET/POST/PUT/DELETE以及上传和下载的支持,比较全面:4.使用Objective-C中的AFNetworking网络库AFNetworking库是在iOS开发领域享有盛名、功能强大的网络请求库。

  8. 在我的Android应用程序中从WordPress获取帖子

    我是Android开发的新手,我正在尝试创建一个只显示WordPress网站上的帖子类别和帖子的应用程序.请帮助我.解决方法您要做的是从wordpress创建某种RESTAPI,以返回对您的AndroidHTTP请求的JSON响应.要做到这一点,首先针对Android,您可以参考这篇文章:MakeanHTTPrequestwithandroid然后,对于服务器端(您的wordpress),您将不得

  9. android – Phonegap本地构建 – jquery ajax错误:readystate 0 responsetext status 0 statustext error

    解决方法您是否在索引文件中包含了内容安全元标记?

  10. Android WebView协议处理程序

    几乎同样的问题已被问及here和here,但是没有找到他们的问题的解决方案.解决方法你有没有试过覆盖post方法做类似的事情:这只是一个想法.也许可以帮到你.

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部