2016-06-29 3 views
1

Вот что я пытаюсь сделать:Отправить HTML ответ от PHP для Ajax

Я использую вызов Ajax для выбора сообщений из моей базы данных, я повторяю содержание в моем PHP, и я стараюсь, чтобы получить вторит html в успехе Ajax. Но это не работает. Вот код.

Jquery:

function SelectMessages() 
{ 
    console.log("Selecting messages"); 
    console.log("Talk = " + talk); 

    $.ajax({ 
     url: "select_messages.php", 
     type: "GET", 
     data: "talk=" + talk, 
     success: function (html) { 
      alert(html); 
      console.log("In success"); 
      $("#message_box").prepend(html) 
     }, 
     error: function (html) { 
      alert(html); 
      console.log("In error"); 
     } 
    });//ajax() 

}//SelectMessages() 

PHP:

<?php 
    //SELECTING MESSAGES 
    require 'dbconnect.php'; 

    header('Cache-Control: no-cache, must-revalidate'); 
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
    header('Content-type: application/json');  

    if ($_GET['talk'] != "") { 
     $request = $bdd->prepare('SELECT AUTHOR,CONTENT FROM MESSAGE WHERE TALK = :talk'); 
     $request->execute(array("talk"=>$_GET['talk']));   

     while ($data = $request->fetch(PDO::FETCH_ASSOC)) { 
      echo' <p> '.$data['CONTENT'].'</p>'; 
     } 
    }    
?> 

Используя этот код, я получаю сообщение "В ошибке" отображается на консоли, а код в предупреждении является «[объект Object]». Тем не менее, статус моего запроса «ОК» в моем браузере, и эхо-результат в сетевом окне - это тот, который ожидается со всеми правильными значениями сообщений.

Я просто не понимаю, почему я получаю ошибку вместо успеха.

Не помещайте это как дубликат, поскольку я уже проверил и протестировал решения Ajax/PHP и не получил никакого результата.

+4

Удалить 'header ('Content-type: application/json'); '!! –

+0

как насчет разговоров vairable? как вы присвоили ему значение? и удалять заголовки из php-файла – theinarasu

+0

. Еще одна проблема с json, я полагаю, поскольку вы получаете ее как «объект объекта» – Ctc

ответ

1

В файле PHP вы установили заголовок типа содержимого следующим

header('Content-type: application/json');  

но обычно повторил ответ как простой текст/html. Либо вы должны отправить ответ в json.

echo json_encode($data['CONTENT']); 

Или удалите заголовок заголовка контента как json.

+0

Извините, но он не может использовать 'echo json_encode ($ data ['CONTENT']);' внутри цикла while! Сначала он должен собрать все данные, а затем зашифровать JSON! Тем не менее, я не вижу необходимости в json закодированных данных здесь! –

+0

@IsmailRBOUH Но я не думаю, что цикл будет происходить более одного раза, но я также дал альтернативное решение. –

+0

Я удалил 'header ('Content-type: application/json');' и он сработал. Спасибо, в любом случае ! –

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