#javascript #php #json #ajax
#javascript #php #json #ajax
Вопрос:
У меня есть запрос JSON с использованием метода post, использующего ajax в этом коде
$(document).ready(function() {
$(document).on('submit', '#registration_check', function() {
var data = $(this).serialize();
$.ajax({
type: 'POST',
url: 'apidomain.com',
data: data,
success: function(data) {
$("#registration_check").fadeOut(500).hide(function() {
$(".result_1").fadeIn(500).show(function() {
$(".result_1").html(data);
});
});
}
});
return false;
});
});
ответ вернет 3 поля, такие как имя, электронная почта, телефон для этого элемента:
<div id="result_1"></div>
пока все работает хорошо, но я планирую отобразить предупреждение или всплывающее сообщение, если в ответе ajax обнаружено какое-либо возвращаемое значение null. Например:
-
Если ответ в формате JSON возвращается: имя: джон, электронная почта: jhon@doe.com , телефон: 123456789 пользователь перенаправит на другую страницу (пока сделано)
-
Но если ответ в формате JSON вернет имя: Джейн, электронная почта: jane@doe.com , телефон:
Появится всплывающее окно или оповещение, внутри текста номер телефона пустой.
Комментарии:
1. Покажите свой php-код
2. Привет, PHP-код находится под apidomain, обрабатывающим запрос. На стороне пользователя я использую html с Ajax, как указано выше
Ответ №1:
Если ваши данные представляют собой объект JSON, то вы можете сделать:
success: function(data) {
for (var i in data) {
if (!data[i]) {
alert(/* MESSAGE HERE */)
return;
}
}
// Your regular code here
}
Ответ №2:
Вы можете создать ассоциативный массив ваших значений в php-файле и отобразить его в формате json следующим образом
echo json_encode($array);
Затем вы получите это в своем ответе ajax следующим образом
var objs = JSON.parse(data);
Затем вы можете проанализировать значения по таким ключам, как name
, email
и phone
, как вы определили в ассоциативном массиве в вашем php-файле
console.log(objs.name);
console.log(objs.email);
console.log(objs.phone);
Вот как вы можете анализировать значения по отдельности. Вы также можете применить условия по-своему
Ответ №3:
Первое, что приходит мне в голову: вам нужен ответ JSON в элементе document или вы не знаете, как работать с jQuery Ajax?
В любом случае, это решение должно помочь вам в обоих случаях:
$(document).ready(function()
{
$(document).on('submit', '#registration_check', function()
{
var data = $(this).serialize();
$.ajax({
type : 'POST',
url : 'apidomain.com',
data : data,
dataType: 'json', // tell jQuery, that the response data will be a JSON - it will be parsed automatically
success : function(data)
{
// now you have a parsed JSON object in the 'data' var
var show_alert = false;
if (data.phone === null || !data.phone.length) {
show_alert = true;
}
if (data.email === null || !data.email.length) {
show_alert = true;
}
if (show_alert) {
alert('here is the alert :)');
}
$("#registration_check").fadeOut(500).hide(function()
{
$(".result_1").fadeIn(500).show(function()
{
$(".result_1").html(JSON.stringify(data));
});
});
}
});
return false;
});
});