让AJAX与Wordpress一起使用,不断返回0的响应

时间:2015-07-20 02:22:36

标签: php jquery ajax wordpress

嘿,我正在使用画布将图像输出并保存。我无法通过wordpress来发出ajax请求。我一直回到0 responseText。我已经做了好几天了,似乎无法让它发挥作用。我的页面是http://studio-42.com/games

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并且它让我疯狂!请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

您需要在脚本末尾调用die()。简单地回归或回声是不够的。

默认情况下,如果您没有指定返回值(通过调用die()),WordPress默认返回0作为返回码(0表示没有检测到错误)

以下是其他一些细节,WP Codex还有更多细节:https://wordpress.org/support/topic/ajax-call-returns-0