Мне кажется, что я делаю ошибку noob здесь, но это раздражает меня, так что, я думаю, я опубликую!
Я пытаюсь получить message
в массиве php для входа в консоль. Фактически это происходит, данные ничего не возвращают, сообщение возвращает "успех", а data.message не определен.
JavaScript:
var message = '';
jQuery.ajax({
url: '/dir/myfile.php',
type: "POST",
dataType: "json",
data: { message : message },
error: function(xhr, text, thrown){
console.log('error');
},
success: function(data, message, text, xhr){
if(data.message){
console.log('data exists');
} else if(message){
console.log(message);
}else{
console.log('no data');
}
},
})
PHP:
$output = array(
'code' => 1,
'message' => 'Please work!'
);
echo json_encode($output);
Согласно https://api.jquery.com/jQuery.ajax/, прототипом обратного вызова успеха должно быть:
Function(PlainObject data, String textStatus, jqXHR jqXHR)
В любом случае, вы не должны делать такой тест:
if (data) { ... } else if (msg) { ... }
Потому что ваше сообщение - ваши данные!
То, что вы хотите, выглядит так:
if (data) { console.log(data.code) ; console.log(data.message) ; }
Promise
возвращаемый вызовом .ajax
. Прокрутите вниз по api.jquery.com/jQuery.ajax, чтобы увидеть, как использовать done()
fail()
и always()