AJAX jQuery调用没有在IE7,IE8中触发,但在Firefox,Chrome等中运行良好

时间:2012-01-10 18:26:45

标签: wordpress jquery

我有一个自定义的WordPress插件,它似乎不适用于IE7或IE8。但在IE9中工作正常。

因此,用户点击此链接:

<a style="cursor:pointer;color:#ddd;" onclick="Javascript:cp_module_lottery1ptentry();">LINK</a>

反过来又称之为:

        function cp_module_lottery1ptentry(){
        cpdlotterymsg='<?php _e('Are you sure you want to use ', 'cplotto'); ?> <?php echo get_option('cp_lottery1_enter_amount'); ?> <?php _e(' points to purchase a '.get_option('cp_point_entry_label').'?', 'cplotto'); ?>'; 
        thebox = new Boxy('<form id="cp_donate" name="cp_donate" method="post" onsubmit="Boxy.confirm(cpdlotterymsg,function(){cp_module_lottery1ptentry_do();});return false;"><p><strong><?php _e('Use', 'cplotto'); ?> <?php echo get_option('cp_lottery1_enter_amount'); ?> <?php _e('points to purchase a '.get_option('cp_point_entry_label').'.', 'cplotto'); ?></p><br /><br /><input type="submit" value="<?php _e('Purchase '.get_option('cp_point_entry_label').'', 'cplotto'); ?>" style="width:300px;" /></form>', {title: '<?php _e(''.get_option('cp_point_entry_log_label').'', 'cplotto'); ?>', modal: true});
    }

哪个有效,但下一步它会在它调用的地方中断:cp_module_lottery1ptentry_do()

        function cp_module_lottery1ptentry_do(){
        <?php $cb_current_page_url = get_permalink(); ?>
        jQuery.ajax({
            url: "<?php bloginfo('url'); ?>/wp-admin/admin-ajax.php",
            type: "POST",
            cache: false,
            dataType: "json",
            data: "action=cp_module_lottery1ptentry_do",
            success: function(data){
                if(data.success==true){
                    Boxy.alert(data.message);
                    window.setTimeout('window.location = "<?php echo $cb_current_page_url; ?>"', 5500);
                    thebox.hide();
                    thebox.unload();
                }
                else{
                    Boxy.alert(data.message);
                }
            }
        });
    }

我在IE7 / IE8中没有错误,只是在调用cp_module_lottery1ptentry_do()函数时没有任何反应。

我做了很多搜索并尝试了几件事,但没有任何工作。

2 个答案:

答案 0 :(得分:0)

确保您的admin-ajax文件声明了相应的文档类型。

<?php header('Content type: application/json'); ?>

答案 1 :(得分:0)

我改变了两件事来让它发挥作用。我将数据更改为:

data: {action: "cp_module_lottery1ptentry_do"},

然后我删除了所有html代码的框变量:

thebox = new Boxy('<form name="cp_donate" id="cp_donate" method="post" onsubmit="Boxy.confirm(cpdlotterymsg,function(){cp_module_lottery1ptentry_do();});return false;"><label for="cp_points"><?php _e('Use', 'cplotto'); ?> <?php echo get_option('cp_lottery1_enter_amount'); ?> <?php _e('points to purchase a '.get_option('cp_point_entry_label').'.', 'cplotto'); ?></label><br /><br /><input type="submit" value="<?php _e('Purchase '.get_option('cp_point_entry_label').'', 'cplotto'); ?>" style="width:300px;" /></form>', {title: '<?php _e(''.get_option('cp_point_entry_log_label').'', 'cplotto'); ?>', modal: true});

所以现在它可以工作,在IE6中 - IE9!这里如果最终代码:

function cp_module_lottery1ptentry(){
cpdlotterymsg='<?php _e('Are you sure you want to use ', 'cplotto'); ?> <?php echo get_option('cp_lottery1_enter_amount'); ?> <?php _e(' points to purchase a '.get_option('cp_point_entry_label').'?', 'cplotto'); ?>'; 
thebox = new Boxy('<form name="cp_donate" id="cp_donate" method="post" onsubmit="Boxy.confirm(cpdlotterymsg,function(){cp_module_lottery1ptentry_do();});return false;"><label for="cp_points"><?php _e('Use', 'cplotto'); ?> <?php echo get_option('cp_lottery1_enter_amount'); ?> <?php _e('points to purchase a '.get_option('cp_point_entry_label').'.', 'cplotto'); ?></label><br /><br /><input type="submit" value="<?php _e('Purchase '.get_option('cp_point_entry_label').'', 'cplotto'); ?>" style="width:300px;" /></form>', {title: '<?php _e(''.get_option('cp_point_entry_log_label').'', 'cplotto'); ?>', modal: true});

}

function cp_module_lottery1ptentry_do(){
jQuery.ajax({
    dataType: "json", data: {action: "cp_module_lottery1ptentry_do"},
    success: function(data){
        if(data.success==true){
            Boxy.alert(data.message);
            window.setTimeout('window.location = "<?php echo $cb_current_page_url; ?>"', 5500);
            thebox.hide();
            thebox.unload();
        } else { Boxy.alert(data.message); }
    }
});
}

我还有一个.js文件,里面有这个。感谢ajaxSetup提示Matt Wolfe!

jQuery.ajaxSetup({ url: "../../../wp-admin/admin-ajax.php", type: "POST", cache: false });