Обратный вызов Ajax -> сообщения формируют PHP через JSON в JS и выводят в DIV

#javascript #json #ajax

#javascript #json #ajax

Вопрос:

Это вопрос новичка. Я никогда не изучал JS, и мне очень сложно делать простые вещи..

У меня есть PHP-скрипт, который получает данные через JS с веб-сайта. PHP-скрипт обновляет базу данных и возвращает результат успешного выполнения с помощью следующей строки кода:

 echo json_encode(array('success'=>'true'));
 

Я настроил функцию, которая что-то делает, когда возвращается «успех»:

 success: function(){
  ....
} 
 

Теперь я хочу немного расширить его. Мой PHP-скрипт также вернет сообщение, которое должно быть выведено в DIV.

Это будет выводить что-то вроде:

«ошибка-сообщение об ошибке» => «Не удалось записать в БД». или «сообщение об успехе» => «Данные успешно сохранены в БД».

Я действительно не знаю, как проверить, являются ли возвращаемые данные «сообщением об ошибке» или сообщением об успехе. Я не знаю, как получить строку msg, а также как отобразить ее в определенном DIV.

Не могли бы вы мне помочь?

Спасибо!

Ответ №1:

Вместо использования success_msg and error_msg вы могли бы просто использовать status_msg and status (в вашем PHP-скрипте).

status_msg будет содержать текст. статус будет содержать "success" or "error" . Вы также можете использовать любой другой вид маркера, который вам нравится.

Чтобы проверить статус сообщения в Javascript,

 var response = JSON.parse(data);
console.log(response.status_msg); //display the message    
if(response.status == "success"){    
    //do something    
}    
else {    
    //do something    
}
 

После получения сообщения вы можете отобразить его в DIV с помощью

 document.getElementById("message").innerHTML = response.status_msg;
 

HTML-файл будет выглядеть так

 <div id="message">
</div>
 

Комментарии:

1. Спасибо за код! Не могли бы вы, пожалуйста, сказать мне, что вставить сюда: (<response_from_server>)? Я не уверен, как реализовать bootstrap-разметку в вашем примере. Я хочу использовать разметку оповещений, например: <div class=»alert alert-danger» role =»alert»>…</div> Если сообщение является ошибкой, оно должно использовать «alert-danger» и «alert-succes» при успешном завершении. Я также не знаю, поместил ли я ваш код внутри указанной функции успеха в моем главном вопросе 😉

2. Замените <response_from_server> переменной Javascript, которая содержит ответ, полученный с сервера. Для использования разметки начальной загрузки вам необходимо использовать функции addClass и removeClass из DOM API. Кроме того, предложенный мной код должен входить в вашу функцию. Если я могу спросить, как ваш код вводит функцию успеха? Это обработчик, предоставляемый какой-либо библиотекой?