2016-11-21 108 views
0

有人可以解釋我爲什麼這個jQuery代碼不能工作嗎?我總是得到console.log()。 WebsiteData.ajax_url警報打印正確的URL。jQuery ajax不能在wordpress中工作

$('.variations_form').submit(function() { 
    var html = $('#website-textarea').html(); 
    //alert(WebsiteData.ajax_url); 
    jQuery.ajax({ 
     url : WebsiteData.ajax_url, 
     type : 'post', 
     data : { 
      action : 'post_love_add_love', 
      html : html 
     }, 
     success : function(response) { 
      alert(response); 
     }, 
     error: function(response) { 
      console.log(response); 
     } 
    }); 
}); 

PHP代碼:

class WebsiteIconInsertion { 

    public function __construct() { 
     add_action('wp_enqueue_scripts', array($this, 'AddStyles')); 
     add_action('wp_ajax_post_love_add_love', array($this, 'post_love_add_love')); 
     add_action('wp_ajax_nopriv_post_love_add_love', array($this, 'post_love_add_love')); 
    } 

    public function AddStyles() {   
     wp_register_script('website-icons-js', plugin_dir_url(__FILE__) . 'public/js/website-icons.js'); 
     wp_localize_script('website-icons-js', 'WebsiteData', array('ajax_url' => admin_url('admin-ajax.php'), 'file_path' => plugin_dir_url(__FILE__))); 
     wp_enqueue_script('website-icons-js'); 
    } 

    function post_love_add_love() { 
      echo "nx"; 
      die(); 
    } 
} 
+0

你得到什麼響應狀態?其他'錯誤:函數(jqXHR,textStatus,errorThrown)'參數說什麼? – Justinas

+0

@Justinas只打印錯誤# – Giedidius

回答

0

使AJAX工作在這兩個記錄,並註銷用戶時,你需要兩個單獨的操作

//Actual ACTION NAME IS my_action 
//for logged in user 
add_action('wp_ajax_my_action', 'my_action_callback'); 

//for non logged in user 
add_action('wp_ajax_nopriv_my_action', 'my_action_callback'); 

而且阿賈克斯URL應該對應於管理員阿賈克斯網址,你可以使用

wp_localize_script('ajax-script', 'ajax_object', 
      array('ajax_url' => admin_url('admin-ajax.php'), 'we_value' => 1234)); 
+0

在第一篇文章中包含php代碼。在我看來,一切都很好,但仍然無法正常工作。 – Giedidius

+0

@Giedidius您在WebsiteData.ajax_url中獲得什麼價值, – abhirathore2006

+0

@Giedidius替換退出並測試它 – abhirathore2006

0

仔細檢查管理AJAX網址是否正確(的BeewoodData.ajax_url值)和PHP函數創建admin_url('admin-ajax.php'); 確保您添加在後端的行動,根據行動你在數據對象(post_love_add_love)定義:

add_action('wp_ajax_post_love_add_love', 'your_custom_ajax_callback'); //for logged users 

add_action('wp_ajax_nopriv_post_love_add_love', 'your_custom_ajax_callback'); //for anon users, note that I| added same callback, but you can change it if differs for logged in and anonymous users 

而且,請確保在function your_custom_ajax_callback之內,您的最後一行應以die()結尾,否則,json_output或任何其他響應將無效,並且會附加WordPress的其他輸出。

function your_custom_ajax_callback() { 

//do your custom code 
echo json_encode($output); 
die(); 

} 
+0

不要忘了標題設爲如果你打算用json回覆,也可以使用JSON –

+0

在第一篇文章中包含php代碼。在我看來,一切都很好,但仍然無法正常工作。 – Giedidius

0
jQuery('.variations_form').submit(function() { 
     var html = jQuery('#website-textarea').html(); 
     var ajaxurl = 'https://example.com/wp-admin/admin-ajax.php'; 
     jQuery.ajax({ 
      url : ajaxurl , 
      type : 'post', 
      data : { 
       action : 'post_love_add_love', 
       html : html 
      }, 
      success : function(response) { 
       alert(response); 
      }, 
      error: function(response) { 
       console.log(response); 
      } 
     }); 
    }); 
+0

同樣的結果,在控制檯中的錯誤 – Giedidius

+0

粘貼錯誤屏幕截圖 –

0

試試這個

<script> 
    jQuery(document).ready(function() { 
    jQuery(".remove_compare").click(function() { 
     var current_att=jQuery(this); 
     jQuery.ajax({ 
       url: "<?php echo admin_url('admin-ajax.php'); ?>", 
       type: 'POST', 
       data: { 
        action: 'remove_to_compare', 
        user_id:jQuery(this).attr("user_id"),  
        }, 
       success: function(response) { 
        //code 
       } 

     }); 
    }); 
}); 
</script> 

add_action('wp_ajax_remove_to_compare', 'remove_to_compare');  
add_action('wp_ajax_nopriv_remove_to_compare', 'remove_to_compare'); 
function add_to_compare(){ 
      //coading…. 
}