#javascript #php #ajax
#javascript #php #ajax
Вопрос:
Мой ajax
$.ajax({
type: 'POST',
url: ajax.ajax,
contentType: false,
processData: false,
dataType: 'JSON',
status: 200,
data: formdata,
success: function(msg){
$('#success_message').fadeIn().html(data);
setTimeout(function() {
$('#success_message').fadeOut("slow");
}, 2000 );
}
});
Это часть PHP
function form(){
global $wpdb;
$table = cars;
foreach ($_FILES as $file) {
if($file['error'] == UPLOAD_ERR_NO_FILE) {
continue;
}
$valid_ext = array( 'img' , 'png');
$extension_upload = strtolower( substr( strrchr($file['name'], '.') ,1) );
if ( in_array($extension_upload,$valid_ext) ) {
$name_upload = uniqid() . $file['name'];
$url_insert = trailingslashit( plugin_dir_path( dirname( __FILE__ ) ) ) . 'uploads';
wp_mkdir_p($url_insert);
$name_insert = trailingslashit($url_insert) . $name_upload;
$action = move_uploaded_file($file['tmp_name'],$name_insert);
$data = array( 'customer_resume' => $name_upload );
$format = array( '%s' );
$success=$wpdb->insert( $table, $data, $format );
$msg_true = 'Upload ok ';
} else {
$msg_error = 'Upload error';
}
}
$result = !isset($msg_error);
$msg = array();
if($result) {
$msg['error'] = 'true';
$msg['true'] = $msg_true;
} else {
$msg['error'] = 'false';
$msg['false'] = $msg_error;
}
header('Content-Type: application/json');
echo json_encode($msg);
}
И HTML, где я пытаюсь показать сообщение об успехе или ошибке
<div id="error_message"></div>
<div id="success_message"></div>
Когда я нажимаю на кнопку отправки, у меня все работает нормально и сохраняется в базе данных, но нет никаких указаний на то, что это успех или нет. Я пытался добавить это msg
, но на странице все еще ничего не отображается.
Комментарии:
1. что
data
здесь$('#success_message').fadeIn().html(data);
? и как вы меняете сообщение как html?2. @NikleshRaut я не уверен. Я пробовал разные вещи, чтобы показать это..
3. Я не очень знаком с js и просто пробовал разные «решения» из разных руководств
Ответ №1:
На стороне PHP:
Вам нужно напечатать одну и ту же переменную для успеха и неудачи:
if($result) {
$msg['error'] = 'true';
$msg['msg'] = $msg_true;
} else {
$msg['error'] = 'false';
$msg['msg'] = $msg_error;
}
Сторона JavaScript:
Ответ AJAX будет отображаться как
data.error -> true or false.
data.msg -> Success or Error message depending upon program logic.
...
success: function(data){
$('#success_message').fadeIn().html(data.msg);
...
Комментарии:
1. Не могли бы вы посмотреть, что есть в консоли javascript?
2. Ну, я ничего не вижу.
3. Я попытался добавить
console.log(data.msg);
внутреннюю функцию успеха, но также ничего не показывает на консоли4. Это потому, что вы пытаетесь отобразить неправильную вещь, попробуйте console.log(msg.msg). Данные, передаваемые в функцию, называются msg, элемент JSON этого элемента также называется msg. Аспект данных — это данные формы, отправляемые в PHP-скрипт.
5. @Jared, вы передаете переменную
msg
в function:success()
, поэтому вам нужно использоватьmsg.msg
вместоdata.msg
asdata
нигде.
Ответ №2:
Что скрывается за «ajax.ajax»?
Также, если вы хотите показать свои данные, вам нужно использовать «msg»
success: function(msg){
$('#success_message').fadeIn().html(msg);
setTimeout(function() {
$('#success_message').fadeOut("slow");
}, 2000 );
}
Комментарии:
1. За ajax.ajax находится локализация WordPress —
wp_enqueue_script
иwp_localize_script