2016-12-08 4 views
1

Я посылаю на пост данных, чтобы получить JSon строку обратно:Ajax разбора JSON строку возвращает неопределенное,

Моя JSON строка:

{"error":false,"success":"Added Website","website_id":"12"} 

Мой запрос Ajax:

$('.publsher_add_website').on("submit", function() { 
    show_loader(); 
    $.ajax({ 
    url: $(this).attr('action'), 
    type: $(this).attr('method'), 
    data: $(this).serialize(), 
    success: function(data) { 
     if (data.success == false) { 
     ajax_error(data.error); 
     hide_loader(); 
     } else { 
     console.debug(data); 
     console.log(data.error); 
     console.log(data.success); 
     console.log(data.website_id); 
     location.href = site_url + "publisher/websites?added=" + data.website_id + "#modal-verify"; 
     hide_loader(); 
     } 
    }, 
    error: function() { 
     hide_loader(); 
    } 
    }); 
    return false; 
}); 

Теперь, когда я иду использовать возвращенные data, все они не определены. Я использовал:

console.debug(data); 

который возвращает строку JSON выше, но если я пытаюсь получить доступ к ним индивидуально:

data.error; 
data.success; 
data.website_id; 

Они все возвращаются в undefined Почему это? Как я могу это исправить?

+1

Похоже, вы не используете 'dataType', так что вы можете попробовать делать' успех: функция (данные) {данные = JSON.parse (данные); 'как первое в функции' success'? –

+0

Ahh. Глупая ошибка. Спасибо. –

+0

Ответь сейчас. –

ответ

0

Вы не предоставили dataType в вашем $.ajax, поэтому AJAX рассматривает реакцию как string, не является объектом. Таким образом, внутри функции success, сделать это первым:

success: function(data) { 
    data = JSON.parse(data); 
0

Попробуйте синтаксического анализа строки JSON в объект JSON, чтобы получить свои значения:

data = JSON.parse(data); 
Смежные вопросы