2012-01-10 65 views
0

我有一個自定義的WordPress插件,它似乎不能在IE7或IE8中工作。但在IE9中運行良好。AJAX jQuery調用不會在IE7,IE8中觸發,但在Firefox,Chrome等中可以正常工作

因此,用戶點擊此鏈接:

<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_lottery1ptent ry_do()函數。

我做了很多搜索並嘗試了幾件事,但沒有任何工作。

+0

嗯,我們在演示頁面點擊了什麼?什麼模擬賬戶? – mrtsherman 2012-01-10 18:30:29

+0

這段代碼是可讀的..你有30次相同的基本功能,只有1件事略有不同..從jquery簽出$ .extend函數..也可以設置AJAX的默認值http://api.jquery.com/jQuery .ajaxSetup/ 檢查了頁面上的源代碼,而不是上面的代碼。 – 2012-01-10 18:34:42

+0

個人而言,我要做的是擺脫元素上的onclick屬性,並將它們與不顯眼的javascript綁定。此外,我要做的是將一些定製屬性將會觸發ajax調用,可能會創建一個action屬性,它將會傳遞你正在傳遞的動作(在數據參數中),然後是一個cb參數,它定義了一個函數的名稱在請求成功 – 2012-01-10 18:38:43

回答

0

2件事情我改變了讓它工作。我的數據改成這樣:

data: {action: "cp_module_lottery1ptentry_do"}, 

然後我刪除了所有的HTML代碼框變量:所以現在它的工作原理,在IE6

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}); 

- 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提示馬特沃爾夫!

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

確保您的admin-ajax文件正在聲明適當的文檔類型。

<?php header('Content type: application/json'); ?> 
相關問題