AJAX代码在Wordpress中不起作用

时间:2012-01-24 16:30:05

标签: php jquery ajax wordpress

全部, 我有以下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页面,它可以正常工作。

3 个答案:

答案 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' );