【发布时间】:2013-11-23 06:19:28
【问题描述】:
我正在尝试学习如何以正确的方式在 Wordpress 中处理 AJAX 请求。为此,我正在调整 this tutorial 以创建一个超级简单的 AJAX 请求,以将帖子的 ID(来自链接)放入我的页面内容中。
逻辑
- 点击
#our-work a链接时[js] - 获取帖子 ID(来自
data-id属性)并将其存储为postID变量 [js] - 通过 AJAX 传递
postID(使用 WP 的admin-ajax.php文件)[js] -
example_ajax_request函数将获取 ID 并简单地回显它 [php] - 如果成功,将服务器响应附加到
#herodiv。
我意识到这没有任何好处,但是一旦我开始工作,我将修改该功能以达到真正的目的。
我的代码
这是我在插件文件夹中创建的函数的副本:
wp_enqueue_script( 'my-ajax-request', plugin_dir_url( __FILE__ ) . 'acl-plugin.js', array( 'jquery' ) );
wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
function example_ajax_request() {
if ( isset($_REQUEST) ) {
$postID = $_REQUEST['postID'];
echo $postID;
}
die();
}
add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' );
这里是JS文件的副本
jQuery(document).ready(function($) {
$('#our-work a').click( function() {
var postID = $(this).attr("data-id");
$.ajax({
url: MyAjax.ajaxurl,
data: {
'action':'example_ajax_request',
'postID' : postID
},
success:function(data) {
$('#hero').append( "Well this seems to work" + data );
},
error: function(errorThrown){
console.log("This has thrown an error:" + errorThrown);
}
});
return false;
});
});
问题
点击链接后,JS 会触发,但会产生以下响应:
<div id="hero">
Well this seems to work 0
</div>
使用警报,我知道在 AJAX 请求之前正在获取 ID。所以问题出在我的功能上。为了了解更多信息,我(暂时)调整了 WP 的 admin-ajax.php 文件,以便我可以找出哪个 die(); 产生了“0”的响应。
这是文件中最后一个我认为不会触发的文件,因为我自己的函数中有一个die(); 命令。有人可以指出我哪里出错了吗?
【问题讨论】:
标签: javascript php jquery ajax wordpress