#php #jquery #wordpress
#php #jquery #wordpress
Вопрос:
У меня есть некоторые проблемы с моим плагином WordPress:
$.ajax(send_rendered_photo.ajaxurl "?action=save_photo",{
type: "POST",
data:{imgURL: dataURL},
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function(response){
},
success: function(data) {
alert(data.data);
},
error: function(data){
alert("fail");
}
});
return false;
Когда у меня есть этот код jQuery в моем js-файле, ответ — null, а в PHP $_POST['imgURL']
— null, но когда у меня есть:
$.ajax(send_rendered_photo.ajaxurl,{
type: "POST",
data:{
imgURL: dataURL,
action: "save_photo",
},
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function(response){
},
success: function(data) {
alert(data.data);
},
error: function(data){
alert("fail");
}
});
return false;
в консоли есть:
СООБЩЕНИЕ http://localhost:81/wordpress/wp-admin/admin-ajax.php 400 (неверный запрос)
Вот мой PHP:
function l_m_add_ajax_js(){
wp_enqueue_script('l_m_ajax_render_photo', plugins_url('scripts/save_photo.js', __FILE__), true);
if(isset($_SERVER['HTTPS'])){
$protocol = 'https://';
}
else{
$protocol = 'http://';
}
$params = array('ajaxurl'=>admin_url('admin-ajax.php',$protocol));
wp_localize_script('l_m_ajax_render_photo','send_rendered_photo', $params);
}
add_action('wp_footer', 'l_m_add_ajax_js');
add_action('wp_ajax_save_photo', 'save_photo');
add_action('wp_ajax_nopriv_save_photo', 'save_photo');
function save_photo(){
$imgURL = $_POST['imgURL'];
$response = array(
'success'=>true,
'data'=>$imgURL
);
print json_encode($response);
exit;
}
Я не знаю, в чем проблема. Спасибо за любую помощь
РЕДАКТИРОВАТЬ: Есть фотографии заголовка и ответа send_rendered_photo.ajaxurl ответ
Это полный js-код
$("#save").on('click',function(){
html2canvas(document.getElementById("create")).then(function (canvas) {
var dataURL = canvas.toDataURL("image/png", 0.9);
alert(dataURL);//dataURL is ok
$.ajax(send_rendered_photo.ajaxurl "?action=save_photo",{
type: "POST",
data: dataURL,
dataType: "json",
complete: function(response){
},
success: function(data) {
alert(data); // data is undefined
},
error: function(data){
alert("fail");
}
});
return false;
});
});
ПРАВИТЬ ПРАВИТЬ:
Я изменил в js-файле «data:{imgURL: dataURL}» на «data: dataURL» и $.ajax на $.post, и это сработало
Комментарии:
1. Где установлена переменная ‘dataURL’? Проверьте пример этой страницы codex.wordpress.org/AJAX_in_Plugins
Ответ №1:
Вы уверены, что ваша переменная send_rendered_photo.ajaxurl содержит правильный URL и не является пустой?
Комментарии:
1. Я уверен, потому что в консольной сети указан правильный URL и отправлен imgURL, но запрос равен нулю
2. Я только что заметил, что вы неправильно фиксируете данные в своей функции save_photo (), поэтому ваша
$_POST['imgURL']
функция всегда будет нулевой. Что вам нужно сделать, так это захватить данные следующим образом:$data = $_POST['data'];
и затем вы можете получить imgURL с$data['imgUrl']
не уверен, решит ли это вашу проблему.3. Теперь это не помогает, мой PHP — это функция save_photo(){ $data = $ _POST[‘data’]; $imgURL = $data[‘imgURL’]; $response = array( ‘success’=> true, ‘data’=> $imgURL ); печать json_encode ($response); выход; } Заголовки Im сетевая консоль является переменной imgURL, но в ответе данные равны нулю