Как получить свойство responseJSON объекта jquery $.ajax
У меня есть этот javascript:
$ajax = $.ajax({
type: 'GET',
url: 'DBConnect.php',
data: '',
dataType: 'json',
success: function(data) {},
error:function (xhr, ajaxOptions, thrownError) {
dir(thrownError);
dir(xhr);
dir(ajaxOptions);
}
});
console.dir($ajax);
console.dir($ajax.responseJSON);
console.dir($ ajax) показывает, что у него есть свойство с именем responseJSON, но когда я пытаюсь получить к нему доступ с $ajax.responseJSON, он возвращает undefined:
![enter image description here]()
Ответы
Ответ 1
Ну, конечно, это undefined, потому что в тот момент, когда вы запускаете console
в последних строках вашего кода, ответ еще не пришел с сервера.
$.ajax
возвращает обещание, которое вы можете использовать для присоединения done()
и fail()
обратных вызовов, где вы можете использовать все свойства, которые вы видите. И вы на самом деле использовали обратный вызов error
и success
, и там, где вы можете запускать код и другие функции, которые полагаются на данные в ответе.
Ответ 2
Вы можете использовать этот трюк, чтобы получить ответ:
jQuery.when(
jQuery.getJSON('DBConnect.php')
).done( function(json) {
console.log(json);
});
Поздно, но надеюсь, это поможет другим.
Ответ 3
Ответ, это "данные", в успехе... поэтому вы можете получить доступ к этим данным записи [0], данным [1], в пределах успеха.
Например:
success: function(data) {
alert(data[0]);
},
Если вам нужен этот ответ, из-за успеха вы можете установить переменную снаружи и попробовать следующее:
success: function(data) {
myVar = data;
},
Надеюсь, эта помощь.
Ответ 4
Для тех, кто на самом деле не возражает, если он синхронно, как и я, вы можете сделать это:
$('#submit').click(function (event) {
event.preventDefault();
var data = $.ajax({
type: 'POST,
url: '/form',
async: false,
dataType: "json",
data: $(form).serialize(),
success: function (data) {
return data;
},
error: function (xhr, type, exception) {
// Do your thing
}
});
if(data.success == 200)
{
$('#container').html(data.responseJSON.the_key_you_want);
}
});
Он проходит через движения, ждет ответа от вызова Ajax, а затем обрабатывает его после состояния == 200 и внутри функции error
, если что-то вызвало ошибку.
Измените параметры, соответствующие вашей ситуации. Счастливое кодирование:)