2015-07-20 89 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如果答案无效,请告诉我,我会再次更新我的回复。否则,如果您将其标记为已解决,我将不胜感激。 –