之前,我是AJAX的新手,但我认为我的代码没有问题,所以我猜是WordPress引起了我的挫折。我希望实现的是从页面接收响应,这是我的简化设置。
我有一个ID为999的页面,其模板为shout.php
,如下所示:
<?php
/*Template Name: PHP - Shout*/
echo "shout1";
if(is_user_logged_in()) echo " - shout2";
?>
如预期的那样,如果我去http://.../Page999
,它会打印出shout1
,并且如果我登录了shout1 - shout2
。
在我的请求页面:
function button_post(){
var http = new XMLHttpRequest();
var url = '<?php echo get_permalink(999); ?>';
var params = ' ';
http.open('POST', url, true);
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
}
我在Wordpress外部有一个shout.php
的复制版本,并且该按钮会像预期的那样响应它,但是当我使用页面999(使用与模板相同的文件)时,它不起作用。我不知道为什么wordpress会以某种方式“阻止”对我功能的响应。
不需要完全相同的设置,但是我需要在wordpress中运行文件,以便可以使用is_user_logged_in()
之类的功能。
据我所知,这是使Wordpress解释外部页面的唯一方法:将其设置为模板并在页面上使用。我不知道这是什么引起了这个问题。
提前谢谢您:)