2015-07-20 47 views
1

嘿,我正在使用畫布來放置圖像並保存它。我無法讓wordpress發出ajax請求。我不斷收回0 responseText。我一直在爲此工作好幾天,似乎無法讓它工作。我的頁面是http://studio-42.com/games讓AJAX與Wordpress一起工作,不斷返回響應0

jQuery(document).on('click', '.draw-game', function() { 

var testCanvas = document.getElementById("mycanvas"); 
var canvasData = testCanvas.toDataURL("image/png"); 
var postData = "canvasData="+canvasData; 
var debugConsole= document.getElementById("debugConsole"); 
debugConsole.value=canvasData; 

jQuery.ajax({ 
url : drawing.ajax_url, 
type : 'post', 
data : { 
action : 'save_the_drawing', 
imgBase64: postData, 

}, 
success : function(response) { 
alert(response); 

這裏是我的JS

而這一次的PHP代碼

add_action('wp_enqueue_scripts', 'drawing_game_enqueue_scripts'); 
function drawing_game_enqueue_scripts() { 
if(is_page('games')) { 
wp_enqueue_style('drawing-game', plugins_url('/drawing-game.css', __FILE__)); 
} 
wp_enqueue_script('drawing-game', plugins_url('/drawing-game.js', __FILE__), array('jquery'), '1.0', true); 
wp_localize_script('drawing-game', 'drawing', array(
'ajax_url' => admin_url('admin-ajax.php') 
)); 
} 

add_action('wp_ajax_nopriv_save_the_drawing', 'save_the_drawing'); 
add_action('wp_ajax_save_the_drawing', 'save_the_drawing'); 
function save_the_drawing() { 



$img = $_POST['postData']; 
$img = str_replace('data:image/png;base64,', '', $img); 
$img = str_replace(' ', '+', $img); 
$fileData = base64_decode($img); 
//saving 
$fileName = 'photo.png'; 
file_put_contents($fileName, $fileData); 

} 

我只保留取回一個0和它的駕駛我瘋了!請幫忙。謝謝!

回答

0

您需要在腳本結尾處撥打die()。簡單地返回或回顯是不夠的。

WordPress的作爲返回代碼默認返回0(0是沒有檢測到錯誤),如果你不指定一個返回值(通過調用die()

這裏的一些額外的細節,並且有更多的WP食品: https://wordpress.org/support/topic/ajax-call-returns-0

+0

感謝您的快速回復,Elliot。我添加了die()函數,但現在它根本不起作用。更清楚的是,Im試圖做的是處理img並將其轉換爲鏈接,然後自動發送到評論表單並提交。如果返回0是好的,那麼Im在正確的軌道上。我如何獲得它以PNG格式或鏈接的形式返回數據? –

+0

Jarod,一旦你有鏈接,說'$ link = {add code here}'然後做'die($ link);'你也可以json_encode()你的鏈接,然後用jQuery檢索JSON使用'jQuery.parseJSON (responseFromAjax)'如果你想使用比字符串更高級的對象。 –

+0

@JarodMeans如果答案無效,請告訴我,我會再次更新我的回覆。否則,如果您將其標記爲已解決,我將不勝感激。 –