сделал аяксом запрос на покупку тариф. плана на сайте, дополнительно захотелось выполнить валидацию на сервере (например если введенная сумма меньше доступной то ошибка), вопрос лишь в том как мне вывести с php ошибку в success аякса, что бы отобразить соответствующие уведомление.
Пробовал вариант с dataType: "json" (этот вариант кода здесь и прикреплю), но в таком виде скрипт на сервере не принимает данные, прошу помочь с данным вопросом, и показать по возможности как можно вывести и проверить через if в аяксе, переменную с данными об ошибке с php.
Всем спасибо. js
<script type="text/javascript">
function createTarif() {
var msg = $('form[name="create-tarif"]').serialize();
depositValue = $("#deposit__amount").val();
$.ajax({
method: "POST",
url: "{{ app }}tarif/confirm",
dataType: "json",
data: msg,
success: function(data) {
// $('#results').html(data);
var status = JSON.parse(data);
if(status['status'] === 'success') {
AllMessageObj.allmess = 'Покупка Тариф. плана "{{ tarif.title }}" на сумму ' + depositValue + '$';
AllTypeMessageObj.allmess = 'success';
allRightAlergMess();
}
else {
AllMessageObj.allmess = 'Ошибка Тариф. плана "{{ tarif.title }}" на сумму ' + depositValue + '$';
AllTypeMessageObj.allmess = 'error';
allRightAlergMess();
}
},
error: function(){
AllMessageObj.allmess = 'Ошибка2 Тариф. плана "{{ tarif.title }}" на сумму ' + depositValue + '$';
AllTypeMessageObj.allmess = 'error';
allRightAlergMess();
}
});
}
function confirmTarif()
{
$tarif = model_tarif::getById($this->request['id']);
if(!$tarif)
location('/');
$amount = (int)$this->request['amount'];
if($tarif['amount_from'] > $amount || $tarif['amount_to'] < $amount)
location('/');
$user = user::i()->getUser();
if($user['baks_bonus_money'] < $amount)
{
$this->assign('no_money', true);
$this->tarifs();
}
else
{
$result = ['status' => 'success']; // ответ для js
model_user_tarif::add($tarif, $user, $amount);
$this->assign('deposit_success', true);
$this->tarifs();
}
$json = json_encode($result);
return $json;
}
попробуйте так:
$.post("{{ app }}tarif/confirm", msg, function(data){
if (typeof data == "object") {
if ("status" in data) {
if (data['status'] == "success") {
//ваш код...
} else {
//ваш код...
}
} else alert("error: status not found");
} else alert("error: response is not object");
}, "json");
у вас переменная $result в php создается только внутри блока else, подумайте о том что вернёт ваш ответ в js если выполнится if
Если захотите убрать json (просто убираете проверки на объект и существование ключа ну и вашу data['status'] == "success") + четвёртый аргумент функции post "json" и тогда data будет просто строковым ответом с сервера
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Для расчета дней в периоде использую вот такую функцию
Как создавать свой шаблон в SuggestView я понял, но как вывести данные от SuggestView в шаблоне - я так и не понял
Срабатывает скрипт при выборе одного чекбоксаА как можно описать событие при выборе двух (и более)? Вот так не получается