Требуется реализовать добавление комментариев на сайте с помощью AJAH, решил использовать jQuery, написал не большой скрипт , вначале все работало, но когда потребовалось сделать проверку вводимых данных на стороне сервера, возникли проблема, как передать массив от сервера к клиенту? Попробовал использовать JSON, когда начал воплощать это в реальность возникли проблемы. Пытался исправть - не вышло, скрипт вообще не запускается...Помогите, новичку.
Сам скрипт:
function addComment()
{
form = document.getElementById("com");
text = form.text.value;
author = form.author.value;
ip = form.ip.value;
img = form.img.value;
id = form.id.value;
pr = form.pr.value;
erdiv = document.getElementById("error_div");
erdiv.innerHTML = "<p align='center'>Ваш комментарий обрабатывается...</p>";
$.post(
'test.php',
{
text: text,
author: author,
ip: ip,
img: img,
id: id,
pr: pr
}, Success()
);
}
function Success(data)
{
result = eval(data);
erdiv.innerHTML = "";
if (result.err == 'no')
{
td = document.createElement("div");
td.innerHTML = ("<div class='post_div'><p class='post_comment_add'>Автор: <strong>"+result.author+"</strong> <br> Дата: "+result.date+"</p><p>"+result.text+"</p></div>");
comtab = document.getElementById("comtab");
comtab.appendChild(td);
form.text.value = "";
}
else
{
erdiv.appendChild(result.log);
}
}
Форма с данными
не знаю зачем, но вдруг что нить здесь)
<div id='comtab'></div><div id='error_div'></div>
<p class='post_comment_addes'>Добавить комментарий:</p>
<form method='post' name='comments' id="com">
<p><label>Комментарий: </label><br>
<textarea style='border: 1px solid gray;' onfocus='this.style.background="#fcffc4"' onblur='this.style.background="#ffffff"' name='text' cols='33' rows='6'></textarea></p>
<p>Введите сумму с картинки:<br>
<img class='img_sum' src=<?php echo $myrow2["img"] ?> width='100' height='30'>
<input class='img_area' style='border: 1px solid gray; margin-bottom:5px;' onfocus='this.style.background="#fcffc4"' onblur='this.style.background="#ffffff"' name='pr' type='text' size='9' maxlength='9'></p>
<input name='id' type='hidden' value='<?php echo $id; ?>'>
<input name='author' type='hidden' value='<?php echo $_COOKIE['pl_login']; ?>'>
<input name='ip' type='hidden' value='<?php $ip=getenv("HTTP_X_FORWARDED_FOR"); if (empty($ip) || $ip=='unknown') {$ip=getenv("REMOTE_ADDR");} echo $ip; ?>'>
<input name='img' type='hidden' value='<?php echo $myrow2["img"]; ?>'>
<p>
<input onMouseOver='this.style.background="#fcffc4"' onMouseOut='this.style.background="#f6f6f6"' style='border:1px solid #CCCCCC;' name='com_add' type='button' value='Добавить' onClick="addComment(); return false;">
</p>
</form>
Обработчик на стороне сервера
тоже не знаю зачем, но вдруг)
Код:
|
<?php
include ("blocks/bd.php");
header("Charset=windows-1251\r\n");
$_POST['author'] = trim($_POST['author']);
$_POST['text'] = trim($_POST['text']);
$_POST['ip'] = trim($_POST['ip']);
$_POST['pr'] = trim($_POST['pr']);
$_POST['author'] = addslashes($_POST['author']);
$_POST['text'] = addslashes($_POST['text']);
$_POST['img'] = addslashes($_POST['img']);
$_POST['ip'] = addslashes($_POST['ip']);
$_POST['pr'] = addslashes($_POST['pr']);
$_POST['author'] = mysql_real_escape_string($_POST['author']);
$_POST['text'] = mysql_real_escape_string($_POST['text']);
$_POST['ip'] = mysql_real_escape_string($_POST['ip']);
$_POST['img'] = mysql_real_escape_string($_POST['img']);
$_POST['pr'] = mysql_real_escape_string($_POST['pr']);
$result = mysql_query ("SELECT sum FROM comment_settings WHERE img='$_POST[img]'",$db);
$myrow = mysql_fetch_array($result);
if ($_POST['pr'] == $myrow["sum"] and preg_match("|^[\d]+$|", $_POST['pr']) and !preg_match("|^[а-яА-Я]+$|", $_POST['text']))
{
$com_date = date("d-m-Y H:i:s");
$result2 = mysql_query ("INSERT INTO comments (post,author,text,date,type,ip) VALUES ('$_POST[id]','$_POST[author]','$_POST[text]','$com_date','les','$_POST[ip]')",$db);
$result3 = mysql_query("SELECT title FROM data WHERE id='$_POST[id]'",$db);
$myrow3 = mysql_fetch_array($result3);
$post_title = $myrow3["title"];
$adress = "photoshop-legend@yandex.ru";
$subject = "Новый комментарий на сайте";
$messege = "Появился комментарий к $post_title \nКомментарий от автора: $_POST[author] \nТекст комментария: $_POST[text] \nСсылка на заметку: http://localhost/blog/lessons.php?id=$_POST[id]";
mail($adress,$subject,$messege,"Content-type:text/plain;Charset=windows-1251\r\n");
$anser = "{ \"err\" : \"no\", \"text\" : \"$_POST[text]\", \"author\" : \"$_POST[author]\", \"date\" : \"$com_date\"}";
}
else
{
$anser = "{ \"err\" : \"yes\", \"log\" : \"<p align='center' style='font-size:11px; color:#CC0000; margin:0px;'><strong>Ошибка</strong></p><ul style='font-family:Verdana; font-size:12px; border:2px solid #cc0000; padding:10px; margin:30px;'>";
if ($_POST['pr'] != $myrow["sum"] or !preg_match("|^[\d]+$|", $_POST['pr'])) {$anser = $anser."<li><p style='margin:0px;' align='center'>Ввод с изображения не правильный.</p></li>";}
if (preg_match("|^[а-яА-Я]+$|", $_POST['text'])) {$anser = $anser."<li><p style='margin:0px; margin-top:5px;' align='center'>В комментарии нет ни одной русской буквы. Не принимается!</p></li>";}
$anser = $anser."</ul>\"}";
}
echo $anser; ?> |