|
|
|
| Привет. Пытаюсь сделать комментарии без перезагрузки.
Написал код
$(document).ready(function() {
$("#send").click(function(){
var author = $("#author").val();
var message = $("#message").val();
var id = $("#id").val();
var avatar = $("#avatar").val();
var login = $("#login").val();
var time = new Date();
var date = time.getDate()+"-" +(time.getMonth()+1)+ "-" +time.getFullYear()+ " в " +time.getHours()+ ":"+time.getMinutes();
$.post('modules/sendMessage.php', {'author':author,'message':message,'id':id,'avatar':avatar,'login':login}, function(data) {
$("#commentBlock").append("<table class='comments'><tr><td width='90'><img src='"+avatar+"' id='ava'></td><td><div class='date'>"+date+"</div><span class='name'>"+author+"</span><p>"+message+"</p></td></tr></table>");
});
});
|
И обработчик на php
//**********************************************
if(empty($_POST['js'])){
if($_POST['message'] != '' && $_POST['author'] != ''){
$author = $_POST['author'];
$message = $_POST['message'];
$id = $_POST['id'];
$login = $_POST['login'];
if ($login=="") {
$login='user';
}
$date = date("Y-m-d H:i:s");
$result = mysql_query("INSERT INTO comment (name, text, date, url, login) VALUES ('$author', '$message', '$date', '$id', '$login')");
if($result == true){
echo 0; //Ваше сообшение успешно отправлено
}else{
echo 1; //Сообщение не отправлено. Ошибка базы данных
}
}else{
echo 2; //Нельзя отправлять пустые сообщения
}
}
//**************************************** Если отключен JavaScript ************************************
if($_POST['js'] == 'no'){
if($_POST['message'] != '' && $_POST['author'] != ''){
$author = $_POST['author'];
$author = addslashes($author);
$author = htmlspecialchars($author);
$author = stripslashes($author);
$author = mysql_real_escape_string($author);
$message = $_POST['message'];
$message = addslashes($message);
$message = htmlspecialchars($message);
$message = stripslashes($message);
$message = mysql_real_escape_string($message);
$id = $_POST['id'];
$id = addslashes($id);
$id = htmlspecialchars($id);
$id = stripslashes($id);
$id = mysql_real_escape_string($id);
$login = $_POST['login'];
if ($login=="") {
$login='user';
}
$date = date("Y-m-d H:i:s");
$result = mysql_query("INSERT INTO comment (name, text, date, url, login) VALUES ('$author', '$message', '$date', '$id', '$login')");
if($result == true){
echo "Ваше сообшение успешно отправлено"; //Ваше сообшение успешно отправлено
}else{
echo "Сообщение не отправлено. Ошибка базы данных"; //Сообщение не отправлено. Ошибка базы данных
}
}else{
echo "Нельзя отправлять пустые сообщения"; //Нельзя отправлять пустые сообщения
}
}
|
Но если я отправляю коммент на странице где нет комментариев, то он не выводится. Если на странице есть хотя бы один коммент, то он сразу отображается. Как сделать, чтобы он отображался сразу? Т.е. если даже комментов нет. | |
|
|
|
|
|
|
|
для: kapitalist
(07.09.2012 в 15:28)
| | Где вы прочли, что методом $.post нужно отправлять данные именно так:
var author = $("#author").val();
var message = $("#message").val();
var id = $("#id").val();
.......
$.post('modules/sendMessage.php', {'author':author,'message':message....
? | |
|
|
|
|
|
|
|
для: confirm
(07.09.2012 в 15:47)
| | Прочитал здесь http://www.ajaxs.ru/lesson/ajax/128-dobavlenie_kommentariev_bez_perezagruzki.html
А как сделать нужно? | |
|
|
|
|
|
|
|
для: kapitalist
(07.09.2012 в 16:40)
| | Не читайте готовый код, который может быть написан бездумно, безграмотно, если хотите что-то познать, а читайте руководства по языку, библиотеке и т.п.. А в официальном руководстве (англ.), а также в русских его версиях хорошо описаны ajax-методы, и методы сопутствующие им.
А собирать код, который безграмотен, это коллекционировать хлам. | |
|
|
|
|
|
|
|
для: confirm
(07.09.2012 в 17:14)
| | Начал читать. Написал вот такой код:
<script type='text/javascript'>
$(document).ready(function(){
$("#send").click(function(){
var name = $("#name").val();
var text = $("#text").val();
$.post("server.php", { name: name, text: text});
});
//setInterval('$("#comment").load("server.php");',10000);
});
</script>
|
Сообщение отправляется без перезагрузки и попадает в БД. А вот как его можно вывести, сразу после того как отправил? | |
|
|
|
|
|
|
|
для: kapitalist
(07.09.2012 в 20:57)
| | Значит так, если бы вы прочли рекомендуемый раздел (а в нем не так и много), то такое бы вы не писали.
Первое - если вам нет особой нужды обращаться к элементам формы вычурным способом, по неким определяемым им id, то зачем они вообще нужны?
А посему так:
$(function(){ // это короче запись, чем $(document).ready(function(){
$("#send").click(function(){
$.post("server.php", $("form").serializeArray(), //это вернет объект как имя поля_формы=его_значение
function(data) {
//это вернулись данные с сервера, которые могут быть только что добавленное
//которое и вставляйте на страницу
}
}, 'html' //это тип возвращаемых данных);
});
//setInterval('$("#comment").load("server.php");',10000);
});
|
А чего у вас таймер делает? | |
|
|
|
|
|
|
|
для: confirm
(07.09.2012 в 21:08)
| | Таймер должен подгружать новые записи. Но это я просто протестировать хотел, как это выглядеть будет. Поэтому я его и закоментил! | |
|
|
|
|
|
|
|
для: kapitalist
(07.09.2012 в 21:19)
| | В коде у меня фигурная скобка лишняя затесалась. Должно быть так:
}, 'html' //это тип возвращаемых данных);
//а скобку перед этой удалить
|
Если знаете для чего и как вставлять, то какие вопросы о выводе на страницу? | |
|
|
|
|
|
|
|
для: confirm
(07.09.2012 в 21:22)
| | Так в том и проблема, что я не понимаю, что нужно написать для вывода на страницу!
function(data) {
ЧТО ДОЛЖНО БЫТЬ ЗДЕСЬ???
}
}, 'html' //это тип возвращаемых данных);
|
| |
|
|
|
|
|
|
|
для: kapitalist
(07.09.2012 в 21:54)
| | Там должен быть код, который вставляет данные на страницу. А какой, это зависит от того, что за данные возвращаются, куда и как вставляется и т.п., и т.д.. Если бы все решалось так "вставить!" и все, тогда бы сказал, что конкретно, а так, думайте, пишите код. | |
|
|
|
|
|
|
|
для: confirm
(07.09.2012 в 22:01)
| | Ну в пхп файле я пишу
echo "Тут разные переменные";
Ну это мне и нужно вставить! | |
|
|
|
|
|
|
|
для: confirm
(07.09.2012 в 22:01)
| | Разобрался! Немного другим образом, но работает! | |
|
|
|
|
|
|
|
для: confirm
(07.09.2012 в 22:01)
| | Но мне все равно интересно, что нужно написать чтобы выводилась инфа с сервера? | |
|
|
|
|
|
|
|
для: kapitalist
(08.09.2012 в 12:27)
| | Я вам уже написал - КОД, а какой конкретно, зависит не от вашего интереса, а от кода страницы и других факторов. Не задавайте вопросов глупых, а читайте и пишите код. | |
|
|
|
|
|
|
|
для: kapitalist
(07.09.2012 в 15:28)
| | Блин, какой же они код запутанный написали, когда можно сделать все намного проще :) | |
|
|
|