#javascript #php #json
Вопрос:
Я кодирую свой возвращенный ответ через JSON и пытаюсь заставить его работать в соответствии со значениями ответа JSON.
Предположим, что ниже приведены значения, которые я возвращаю.
if ($upload = 1){
$response['status'] = 1;
$response['message'] = 'SUCCESS';
$response['success'] = 'false';
}else{
$response['status'] = 3;
$response['message'] = 'CATEGORY ASSOCIATED';
$response['success'] = 'false';
}
header('Content-type: application/json');
echo json_encode($response);
Я получу его в свою форму и обработаю действие с помощью закодированных ответов.
$('#form').on('submit', function(e){
e.preventDefault();
var id = $('#id').val();
$.ajax({
type: "POST",
url: 'edit.php',
data: {cid:id},
success: function(response){
if(response.status = 1){
console.log('THE STATUS IS 1');
}
else if(response.status = 3){
console.log('THE STATUS IS 3');
}
}
});
});
Проблема, с которой я сталкиваюсь, заключается в том, что я получаю оба ответа на вкладке «Сеть» браузера. консоль выводит состояние 1, но не состояние 3. Где я совершаю ошибку?
Комментарии:
1. используйте
==
не=
в том состоянии2. найдите сообщение, в котором описывается разница между
=
(назначение),==
(проверка на равенство) и===
(строгая проверка на равенство) … подсказкаresponse.status = 1
ВСЕГДА правдива3. Строгая проверка помогла. Пожалуйста, опубликуйте это в качестве ответа.
Ответ №1:
Попробуй это…..
$('#form').on('submit', function(e){
e.preventDefault();
var id = $('#id').val();
$.ajax({
type: "POST",
url: 'edit.php',
data: {cid:id},
success: function(response,status){
if(status == 1){
const newres = JSON.parse(response);//parse the response
if(newres.status == 1)
console.log('The status is 1');
else if (newres.status == 3)
console.log('The status is 3');
}
else {
console.log('No response');
}
}
});
});
json_encode($response);
Это строка формата json, разбор делает ее объектом.
Комментарии:
1. Пожалуйста, объясните, почему я хотел бы сделать его объектом, когда я могу выполнить задачу, используя — if(response.status === 1){} как это.
2. можете ли вы объяснить мне, как вы можете этого достичь,
if(response.status === 1)
поскольку я знаю, что код json_encode будет выглядеть как{"status":1,"message":"SUCCESS","success":"false"}
[в вашем случае], который является строковым форматом json.3. возможно, кодирование json возвращает значение INT, и я строго ищу значение INT, используя === в своем JS. двойной оператор пропускает его.
4. О, хорошо, это поиск целого числа, я думал, вы хотите получить доступ к элементам объекта, в любом случае это может помочь получить доступ к другим 2 элементам.