2013-09-13 7 views
0

Итак, у меня есть поле для комментариев с формой (текстовое поле и отправьте). Это проверяется, а затем отправляется на php-страницу через ajax.Обновить div с ответом ajax

Если все в порядке, ответ устанавливается и страница продолжается.

Я хочу, чтобы div обновился, чтобы вы могли видеть новый комментарий.

Я не хочу ничего сложного, как добавление и т. Д., Просто для перезагрузки div (данные извлекаются из базы данных).

Я использовал это в прошлом, но он не работает:

$('#divid').load('page.php #divid'), 

любая идея, как я могу преобразовать это:

 if (check == true) { 
     $.ajax({ 
     type: "POST", 
     url: "process/addcomment.php", 
     data: $targetForm.serialize(), 
     dataType: "json", 
     success: function(response){ 

    if (response.databaseSuccess) 
     $comment.after('<div class="error">Comment Added</div>'); 
    else 
     $ckEditor.after('<div class="error">Something went wrong!</div>'); 

} 
     }); 
    } 
    return false; 
}); 

});

Чтобы обновить div после успешного ответа?

если я пытаюсь добавить еще $ вернуться к моим PHP например

} catch (Exception $e) { 
$return['databaseException'] = $e->getMessage(); 
} 

$return['databaseSuccess'] = $dbSuccess; 
$return['responseHtml'] = 'Post Updated'; 

echo json_encode($return); 

в яваскрипте не работает, и я просто получить нагрузку PHP страницы с возвращениями напечатанных ..

Спасибо.

ответ

2

Если вы

$("#divid").html("Comment Added") 

он установит HTML внутри этого дел.

2

Я думаю, что вы смысл сделать этот

$('#divid').load('page.php'); 

чекаут JQuery .load документации

0

Прежде всего, необходимо немного PHP-код на стороне сервера, который генерирует HTML для дел. Затем используйте этот JavaScript

if (check == true) { 
    $.ajax({ 
    type: ..., 
    url: ..., 
    data: ..., 
    dataType: "html" 
    }) 
    .done(function(responseHtml) { 
     $("#yourDiv").html(responseHtml); 
    }); 
} 
+0

если я пытаюсь обновить PHP до этого окончания: } поймать (Exception $ е) {$ возврата [ 'databaseException'] = $ e-> GetMessage(); \t} \t $ return ['databaseSuccess'] = $ dbSuccess; \t $ return ['responseHtml'] = 'Post updated'; \t echo json_encode ($ return); \t javascript не работает, и я просто получаю страницу php с возвращаемыми утверждениями ... – craig

+0

С вашего вопроса я думал, что вы хотите 1) отправить данные формы 2) обновить div. Для этого вам нужно вернуть содержимое HTML для div как ответ на ваш запрос ajax. Обратите внимание: если вы вернете свои данные, закодированные как JSON, а не HTML, вы должны использовать dataType: «html» и responseHtml в этом примере будет JSON-объектом. – Flavio

+0

Другое решение должно начинаться с другого запроса ajax, например .done (function (response) {if (response.success)/* Начать здесь еще один вызов ajax для запроса содержимого HTML * /}); – Flavio

0

Я предполагаю, что вы обрабатываете свой комментарий на сервере после того, как он был представлен (проверка/санитария/др.). Therefor Я хотел бы вернуться обработанным комментарий как часть ответа, а затем вставьте его в HTML:

$.ajax({ 
    type: "POST", 
    url: "process/addcomment.php", 
    data: $targetForm.serialize(), 
    dataType: "json", 
    success: function(response){ 
     if (response.databaseSuccess) { 
      // if you have a designated empty div already, you can use .html() 
      $("#divid").html('<div class="success">'+response.commentText+'</div>'); 
      // if you want to append it to an already existing list of comments, you can use .append() 
      $("#divid").append('<div class="success">'+response.commentText+'</div>'); 
     } 
     else { 
      $ckEditor.after('<div class="error">Something went wrong!</div>'); 
     } 
    } 
}); 

Конечно, это потребует от вас, чтобы добавить к вашему response.commentText возвращенному объекту JSON.

+0

для добавления текста reponse.comment к моему возвращенному объекту JSON, я думаю, что я должен добавить, например: «$ return ['commentText'] = 'test comment';" – craig

+0

Правильно ... однако, я только что заметил код PHP внизу, чтобы вы могли перепрофилировать свойство responseHtml (если вам это не нужно). – Steve

+0

Я использую пример, который я дал в комментарии выше, но безрезультатно. Нет изменений в div, а также даже когда e. $ (. Commentsbox) .html (commentText); он ничего не делает, кроме комментариев ... – craig

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