jQuery + AJAH
Требуется реализовать добавление комментариев на сайте с помощью 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 |
Можно попросить оформить код читабельней через спце-теги.
Лень было разбираться в коде, но если вы используете json, то в коде я его не увидел. В конеце функции $.post() нужно вставить ключевое слово "JSON". А в php коде на выходе должен быть массив декодированный: jsonencode($array); |
Цитата:
|
Есть для этого редактор на сайте - очень удобный.
|
Цитата:
|
вот про это тут: http://www.linkexchanger.su/2008/34.html
jQuery.post( url, [data], [callback], [type] ) - загружает страницу, используя POST-запрос. Все почти точно так же, как и в предыдущем случае, поэтому даже примеров приводить не буду. Обращу Ваше внимание разве что на еще один опциональный параметр - [type]. В нем можно определить тип передаваемых данных - JSON, XML и т.п. Вот в type тут надо писать "json". Правда в том случае если вы используете post |
| Часовой пояс GMT +3, время: 19:27. |