自定义永久链接结构扰乱了我的jQuery / AJAX功能

时间:2013-04-22 18:14:15

标签: jquery ajax wordpress custom-post-type permalinks

我正在使用Custom Post Type Permalinks插件为我的永久链接设置自定义结构,仅使用Wordpress管理区域中的settings / general。

我使用的自定义永久链接结构是:

/%postname%/%product_category%/

此外,我在single-CPT.php页面下面有一个选择标记,可以触发一些jquery / ajax操作。当我删除自定义固定链接结构时,它会自动激活默认的固定链接结构,一切都像魅力一样。但是在激活上面的结构之后,应该显示结果的DIV由jquery / ajax重新生成,以一种奇怪的方式嵌入整个页面。

我的jquery代码是:

$('select.select').change(function(e) {

    e.preventDefault(); 
    var value = $('select.select option:selected').val(); 

    create_ayat_selectCPT(value); // AJAX function


}) 

非常感谢你的帮助,我花了2天的时间来寻找解决方案。

注意我在网站上使用cutom帖子类型。

修改 考虑到Damon的回答,永久链接结构会影响jquery / ajax函数的行为。实际上,如果我更改为/%product_category%/%postname%/,则会执行Ajax调用但没有成功。

结果:我实际上是显示错误消息的警报。

函数jquery / ajax函数是:

function create_ayat_selectCPT(str) 
{

            $.ajax({
                    type: "GET",
                    url: "wp-admin/admin-ajax.php",
                    dataType: 'html',
                    data: ({ action: 'createAyatSelectCPT', id: str}),
                    success: function(data){

                    $('#second-select').html(data);

                    },
                    error: function(data)  
                    {  
                    alert("Your browser broke create ayat  cpt select!");
                    return false;
                    }  


                }); //ajax

    return false;
}

在functions.php下:

function createAyatSelectCPT() {

$ca=$_GET['id']; 

?>
<form method="post" action="">  


            <select class="select2" id="selectid"> 

                            <?php

                            $my_query = new WP_Query();

                            $args = array(
                                    'post_type' => 'product',
                                    'tax_query' => array(
                                        array(
                                            'taxonomy' => 'product_category',
                                            'terms' => array($ca) 
                                        )
                                    )
                                );


                            $my_query->query($args);


                            if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); 

                               ?>
                                        <option value="<?php the_ID();?>"><?php the_title(); ?></option>
                                <?php

                            endwhile;
                            endif;

            wp_reset_query();
            die();  
?>

</select>
</form>

<?php
}


add_action('wp_ajax_createAyatSelectCPT', 'createAyatSelectCPT');
add_action('wp_ajax_nopriv_createAyatSelectCPT', 'createAyatSelectCPT'); 

要修改的相关HTML标记是:

<div id="second-select">...</div>

编辑2安装Firebug之后:

404 Not Found File:http://localehost.com/enc/products/stuff/stuff/wp-admin/admin-ajax.php?action=createAyatSelectCPT&id=132

然后,问题来自位置admin-ajax.php。此文件在此位置不存在。所以新的永久链接结构要求我在我的jquery脚本文件中修改admin-ajax.php的路径。

1 个答案:

答案 0 :(得分:1)

你怎么知道什么功能弄乱了div?

你的jquery / ajax代码是否改变了div等?如果是这样,您能否向我们提供相应的代码段?

此外,当您使用“/%postname%/%product_category%/”自定义永久链接或任何其他自定义链接时,是否会发生这种情况。

尝试使用Firebug插件,并向我们提供更多信息,以便我们可以快速有效地帮助您解决此问题。截图也有帮助。

下载Firebug:http://getfirebug.com/