【发布时间】:2012-04-18 20:41:28
【问题描述】:
我正在使用 wordpress ajax 调用从 wordpress 主题 functions.php 中的函数返回简单内容。但是,会返回一个完整的 html 页面。
这里是ajax调用
<?php
$ajax_nonce = wp_create_nonce("iwhq_beginner_select_course");
?>
<script type="text/javascript" language="javascript">
jQuery(document).ready(function(){
jQuery("#beg_golf_course").change(function() { //do this when course changes
//in Wordpress ajaxurl always points to admin-ajax.php
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
var course_id = 4;
//Do the ajax
jQuery.ajax({
type: "POST",
url: ajaxurl,
//NOTE - the action parameter calls the function in functions.php
data: { action: 'select_course_aj', course_id: course_id, _ajax_nonce: '<?php echo $ajax_nonce; ?>' },
//display alert on success
success: function(html){
alert(html);
}
}); //close jQuery.ajax(
return false;
});
});
</script>
这是functions.php中的函数
function select_course_func(){
echo $_POST["course_id"];
die();
}
add_action('wp_ajax_select_course_aj','select_course_func');
包含 jquery ajax 调用的页面的 HTML 实际上显示在警报中而不是回显中。
有哪位大神能告诉我原因吗?
谢谢 标记
【问题讨论】:
-
我确实在functions.php中的select_course_func PHP调用中包含了nonce调用,但得到了相同的结果。 check_ajax_referer('iwhq_beginner_select_course', '_ajax_nonce');
-
您查看过 Firebug 中的请求/响应吗?
-
那么究竟什么是警报?你期待'4'对吗?发生了什么是您在加载和 html 404 页面上使用 html 函数的 div?检查您发送 ajax 调用的 url。就像 Jay Blanchard 所说,您可以在 firebug 或 chrome 的网络选项卡中轻松做到这一点。
-
这是我在 Chrome 中检查网络选项卡时的结果:irishwebhq.com/wp-content/uploads/2012/04/chrome_network.jpg 我不明白为什么它会给我 admin.php 的 302 - 我在我的代码中测试了这个链接,它链接到 @ 987654322@
-
是的,John B,我期待 4 发出警报,但发出 ajax 调用的完整 HTML 页面显示在警报中。