全部, 我有以下jQuery代码:
jQuery.ajax({
type: "POST",
url: "http://localhost/oml/save_song.php",
dataType: "json",
data: "song_id=" + song_id + "&love_like_hate=love",
async: false,
success:function(response){
alert(response.responseText1);
})
然后我在save_song.php文件中输入了这段代码:
$song_id = $_POST['song_id'];
$love_like_hate = $_POST['love_like_hate'];
echo json_encode(array('responseText1' => 'It is: '.$love_like_hate));
出于某种原因,如果我在wordpress之外运行此代码,它的工作完全正常,但是当我从wordpress中执行此代码时,它只发布song_id而不是love_like_hate。
编辑:当我在Wordpress中时,我的意思是我安装了Exec-PHP插件,并且正在我创建的一个页面中直接编写PHP和jQuery。如果我只是在一个普通的php文件上运行它而不是一个wordpress页面,它可以正常工作。
答案 0 :(得分:0)
当你说“内”时,你的意思完全在哪里?
当打开clean-urls时,由于mod_rewrite及其架构,Wordpress可以控制其args的设置。这意味着当你调用一个文件时,你可能没有正确地获取这些args,并且它可能没有像你想象的那样执行文件。
更多信息
答案 1 :(得分:0)
我不确定为什么但Wordpress不喜欢AJAX调用,所以我在POST中创建了它。以下是有效的代码:
jQuery.post("http://localhost/oml/save_song.php", { song_id: song_id, love_like_hate: "love" },
function(response) {
alert(response);
}, "json");
答案 2 :(得分:0)
我知道这是前一段时间了,你已经接受了自己的答案,但由于修复程序正在解决使用JSON的问题,我想我可以用原始语境帮助其他人。
原因是您需要挂钩wp_head才能公开admin-ajax.php。 WP需要这个在它的php文件中执行ajax。这是解决这个问题的快捷方法。把它放在你的functions.php文件中。
/**
* Echo ajaxurl
*/
function head_script(){?>
<script type="text/javascript">
var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' );?>";
</script>
<?php }
add_action( 'wp_head', 'head_script' );