2015-12-09 3 views
1

У меня есть функция ajax, которая извлекает два значения для данного сообщения: одно для числа понравившихся, другое для div, которое содержит всех людей, которым понравился этот пост.JSON не может прочитать возвращаемое значение ajax

Все, кажется, работает нормально, результат json верен, но результат печати неверен. Каждый раз, когда я пытаюсь получить количество понравившихся (data.numDiLikes), я всегда получаю undefined, хотя json говорит {"numDiLikes":"1","personeACuiPiace":"div info and stuff"}, как я исправить это?

AJAX с JSON

$.ajax({ 
    dataType: "json", 
    type: 'POST', 
    cache: false, 
    url: "lib/ottieniCose.php", 
    data: { like: "", id: valCOR, comOrisp: comOrisp }, 
    dataType: "html", 
    success: function(data, textStatus){ 
     trova.find('.numDiLikes').first().replaceWith('<p class="numDiLikes">' + data.numDiLikes + ' mi piace</p>' + data.personeACuiPiace); 
    } 
}); 

PHP

if ($_POST['comOrisp'] == 'commento') { 

     $commento->set_likes($_POST['id'], true); 
    // number of people that liked the post 
     $return_data['numDiLikes'] = $commento->get_likes($_POST['id'], true); 
    // div with all the people who liked the post 
     $return_data['personeACuiPiace'] = $commento->posso_fare_qualcosa($_SESSION['auth'], 'cancRisp', $_POST['id']); 

    echo json_encode($return_data);exit; 

} 
+0

Добавьте 'console.log (data)' для функции успеха в AJAX и посмотрите, что он показывает в консоли. –

+0

@ Gothdo '{" numDiLikes ":" 1 "," personeACuiPiace ":" div and stuff "}' как я сказал в сообщении. Если вас интересует полный 'personeACuiPiace', это всего лишь куча'

'материала. 'PersoneACuiPiace' печатается правильно,' numDiLikes' напечатаны alwasys как 'undefined', хотя консоль говорит' 'numDiLikes": "1" 'и должна печатать' 1' – user3847141

ответ

1

Используйте dataType: "json" сказать $.ajax, что она возвращает JSON, и что он должен разобрать его. dataType: "html" означает, что он возвращает текст HTML, а data будет строкой, а не объектом.

+0

Я только заметил, что я поместил 'dataType: «json» 'в первой строке и' dataType: "html" 'на шестой строке функции ajax, удаленный' dataType: "html", 'все работает отлично сейчас – user3847141

+0

Я даже не заметил свойство duplicate. Хорошая среда IDE предупредила бы вас об этом (я использую JetBrains PhpStorm). – Barmar

Смежные вопросы