jenaDI
18.04.2010, 20:26
Привет всем , вообщем, разрабатываю комментирование , и возникла такая проблема - не выводит результат ajax-запроса.
FireBug пишет:
uncaught exception: [Exception... "Could not convert JavaScript argument arg 0 [nsIDOMHTMLDivElement.appendChild]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://127.0.0.1/js/jquery-1.2.6.js :: anonymous :: line 238" data: no]
Код JS:
///////////////////////////////////////////////////////////////////////
//Комментирование
///////////////////////////////////////////////////////////////////////
//Возврат к форме
function upCommentForm() {
$('#addComment').slideDown(350,function(){
$('body').animate({scrollTop: $('#addComment').attr('offsetTop')}, 0);
});
return false;
}
//Добавление комментария
function addCommentForm() {
$('#buttonAddComment').attr("disabled", true); //Делаем кнопку невидимой
var textComment = $("textarea[name$='textComment']").val(); //Текст комментария
if(!textComment)
return false;
var type = $("input[name$='type']").val(); //Тип комментирования
var objectId = $("input[name$='objectId']").val(); //Объект комментирования(id чего-либо)
//ajax request
$.ajax({
url: 'comments.take.php', //url take file
dataType : "html", // тип загружаемых данных
type: "POST" , //post-запрос
data: {'textComment' : textComment , 'type' : type , 'objectId' : objectId}, //Данные
beforeSend: function(){
$("#loadComments").html("<img src=\"pic/load.gif\" alt=\"Зазрузка\">"); //Загрузка
},
complete: function(data , textType) {
$("#loadComments").empty(); //Убираем загрузку
$("#setComment").html(data); //Выводим результат
$('#buttonAddComment').removeAttr("disabled");
}
});
}
Файл ответа на ajax-запрос:
<?
//------------------------------------------------//
//LiteTracker Source
//by Жэнадий
//icq: 455775353
//------------------------------------------------//
//Обработка комментарования
//------------------------------------------------//
#Подключаем главный файл
require "include/main.php";
//////////////////////////////////////////////////////////////////////
//Определяем тип комментирования
//////////////////////////////////////////////////////////////////////
$requestType = $_SERVER['HTTP_X_REQUESTED_WITH'];
if($requestType == 'XMLHttpRequest') {
header("Content-Type: text/html; charset=".$language['charset']."");
function bark($msg = "" , $type = 'success') { stdmsg($msg);die(); }
} else {
function bark($msg = "" , $type = 'success') { stderr('Ошибка',$msg); }
}
//Запрещаем комментировать гостям
if(!$CURUSER) die('Вы не авторизированы');
//////////////////////////////////////////////////////////////////////
//Объявляем переменные
//////////////////////////////////////////////////////////////////////
$type = (string)$_POST['type']; //Тип комментирования
//Текст комментария
if($requestType == 'XMLHttpRequest')
$textComment = ($_POST['textComment'] == '' ? bark("Введите текст комментария") : iconv('utf-8', $language['charset'] , $_POST['textComment']));
else
$textComment = ($_POST['textComment'] == '' ? bark("Введите текст комментария") : (string)$_POST['textComment']);
$objectId = (int)$_POST['objectId']; //Номер объекта
//////////////////////////////////////////////////////////////////////
$tableName = 'comments_'.$type; //Имя таблицы
$objectName = 'id_'.$type; //К чему мы добавляем комментарий
$idUser = (int)$CURUSER['id']; //Номер пользователя
//////////////////////////////////////////////////////////////////////
$insert = array();
$insert[] = "text=".sqlesc($text);
$insert[] = "added=NOW()";
$insert[] = "id_user=".sqlesc($idUser);
$insert[] = $objectName."=".sqlesc($objectId);
//insertComment
$insertComment = sql_query("INSERT INTO ".$tableName." SET ".implode("," , $insert)) or sqlerr(__FILE__ , __LINE__);
if(!$insertComment) bark("Ошибка при добавлении комментария");
//////////////////////////////////////////////////////////////////////
echo $textComment;
?>
Вывод всего: (функции)
<?
//------------------------------------------------//
//LiteTracker Source
//by Жэнадий
//icq: 455775353
//------------------------------------------------//
//Форма добавления комментария
function addComment($type = "" ,$objectId = "") {
global $CURUSER;
if($CURUSER)
{
echo '<div id="addComment" style="display:none;">';
begin_frame('');
echo '<form name="addComment" method="POST" action="comments.take.php" ';
textbbcode("addComment", "textComment" , htmlspecialchars($_POST['textComment']));
echo '<br>';
echo '<button class="fg-button ui-state-default ui-priority-secondary ui-corner-all" onClick="addCommentForm();" type="button" name="buttonAddComment">Добавить комментарий</button>';
echo '<input type="hidden" value="'.$objectId.'" name="objectId">';
echo '<input type="hidden" value="'.$type.'" name="type">';
echo '</form>';
end_frame();
echo '</div>';
}
}
//Форма добавления комментария
function listComment($type = "" , $objectId = "") {
global $CURUSER , $language;
//Js functions
echo '<script src="js/comments.js"> </script>';
//////////////////////////////////////////////////////////////////
//Форма добавления
//////////////////////////////////////////////////////////////////
addComment($type , $objectId);
//////////////////////////////////////////////////////////////////
//Вывод комментариев
//////////////////////////////////////////////////////////////////
//Query to database
$query = "SELECT comments_".$type.".* ,
users.* ,
".$type.".*
FROM comments_".$type."
LEFT JOIN users ON users.id = comments_".$type.".id_user
LEFT JOIN ".$type." ON ".$type.".id = comments_".$type.".id_".$type."";
$sql = sql_query($query) or sqlerr(__FILE__ , __LINE__);
begin_frame($language['comments'].'<load id="loadComments"></load>');
echo ($CURUSER ? stdmsg("Вы можете <a href=\"#upCommentForm\" onClick=\"upCommentForm();return false;\">добавить комментарий</a>") : "Вы вошли как <b>гость</b>" );
//Div для новых комментарий
echo '<div id="setComment"></div>';
//Проверка
if(!mysql_num_rows($sql))
{
stdmsg("Комментариев нет" , '' , 'error');
}
else
{
//Выводим в цикле комментарии
while($arr = mysql_fetch_object($sql))
{
echo '<div id="comment'.$arr->id.'">';
echo $arr->text;
echo '</div>';
}
}
end_frame();
}
?>
ПОМОГИТЕ ПОЖАЛУЙСТА
FireBug пишет:
uncaught exception: [Exception... "Could not convert JavaScript argument arg 0 [nsIDOMHTMLDivElement.appendChild]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://127.0.0.1/js/jquery-1.2.6.js :: anonymous :: line 238" data: no]
Код JS:
///////////////////////////////////////////////////////////////////////
//Комментирование
///////////////////////////////////////////////////////////////////////
//Возврат к форме
function upCommentForm() {
$('#addComment').slideDown(350,function(){
$('body').animate({scrollTop: $('#addComment').attr('offsetTop')}, 0);
});
return false;
}
//Добавление комментария
function addCommentForm() {
$('#buttonAddComment').attr("disabled", true); //Делаем кнопку невидимой
var textComment = $("textarea[name$='textComment']").val(); //Текст комментария
if(!textComment)
return false;
var type = $("input[name$='type']").val(); //Тип комментирования
var objectId = $("input[name$='objectId']").val(); //Объект комментирования(id чего-либо)
//ajax request
$.ajax({
url: 'comments.take.php', //url take file
dataType : "html", // тип загружаемых данных
type: "POST" , //post-запрос
data: {'textComment' : textComment , 'type' : type , 'objectId' : objectId}, //Данные
beforeSend: function(){
$("#loadComments").html("<img src=\"pic/load.gif\" alt=\"Зазрузка\">"); //Загрузка
},
complete: function(data , textType) {
$("#loadComments").empty(); //Убираем загрузку
$("#setComment").html(data); //Выводим результат
$('#buttonAddComment').removeAttr("disabled");
}
});
}
Файл ответа на ajax-запрос:
<?
//------------------------------------------------//
//LiteTracker Source
//by Жэнадий
//icq: 455775353
//------------------------------------------------//
//Обработка комментарования
//------------------------------------------------//
#Подключаем главный файл
require "include/main.php";
//////////////////////////////////////////////////////////////////////
//Определяем тип комментирования
//////////////////////////////////////////////////////////////////////
$requestType = $_SERVER['HTTP_X_REQUESTED_WITH'];
if($requestType == 'XMLHttpRequest') {
header("Content-Type: text/html; charset=".$language['charset']."");
function bark($msg = "" , $type = 'success') { stdmsg($msg);die(); }
} else {
function bark($msg = "" , $type = 'success') { stderr('Ошибка',$msg); }
}
//Запрещаем комментировать гостям
if(!$CURUSER) die('Вы не авторизированы');
//////////////////////////////////////////////////////////////////////
//Объявляем переменные
//////////////////////////////////////////////////////////////////////
$type = (string)$_POST['type']; //Тип комментирования
//Текст комментария
if($requestType == 'XMLHttpRequest')
$textComment = ($_POST['textComment'] == '' ? bark("Введите текст комментария") : iconv('utf-8', $language['charset'] , $_POST['textComment']));
else
$textComment = ($_POST['textComment'] == '' ? bark("Введите текст комментария") : (string)$_POST['textComment']);
$objectId = (int)$_POST['objectId']; //Номер объекта
//////////////////////////////////////////////////////////////////////
$tableName = 'comments_'.$type; //Имя таблицы
$objectName = 'id_'.$type; //К чему мы добавляем комментарий
$idUser = (int)$CURUSER['id']; //Номер пользователя
//////////////////////////////////////////////////////////////////////
$insert = array();
$insert[] = "text=".sqlesc($text);
$insert[] = "added=NOW()";
$insert[] = "id_user=".sqlesc($idUser);
$insert[] = $objectName."=".sqlesc($objectId);
//insertComment
$insertComment = sql_query("INSERT INTO ".$tableName." SET ".implode("," , $insert)) or sqlerr(__FILE__ , __LINE__);
if(!$insertComment) bark("Ошибка при добавлении комментария");
//////////////////////////////////////////////////////////////////////
echo $textComment;
?>
Вывод всего: (функции)
<?
//------------------------------------------------//
//LiteTracker Source
//by Жэнадий
//icq: 455775353
//------------------------------------------------//
//Форма добавления комментария
function addComment($type = "" ,$objectId = "") {
global $CURUSER;
if($CURUSER)
{
echo '<div id="addComment" style="display:none;">';
begin_frame('');
echo '<form name="addComment" method="POST" action="comments.take.php" ';
textbbcode("addComment", "textComment" , htmlspecialchars($_POST['textComment']));
echo '<br>';
echo '<button class="fg-button ui-state-default ui-priority-secondary ui-corner-all" onClick="addCommentForm();" type="button" name="buttonAddComment">Добавить комментарий</button>';
echo '<input type="hidden" value="'.$objectId.'" name="objectId">';
echo '<input type="hidden" value="'.$type.'" name="type">';
echo '</form>';
end_frame();
echo '</div>';
}
}
//Форма добавления комментария
function listComment($type = "" , $objectId = "") {
global $CURUSER , $language;
//Js functions
echo '<script src="js/comments.js"> </script>';
//////////////////////////////////////////////////////////////////
//Форма добавления
//////////////////////////////////////////////////////////////////
addComment($type , $objectId);
//////////////////////////////////////////////////////////////////
//Вывод комментариев
//////////////////////////////////////////////////////////////////
//Query to database
$query = "SELECT comments_".$type.".* ,
users.* ,
".$type.".*
FROM comments_".$type."
LEFT JOIN users ON users.id = comments_".$type.".id_user
LEFT JOIN ".$type." ON ".$type.".id = comments_".$type.".id_".$type."";
$sql = sql_query($query) or sqlerr(__FILE__ , __LINE__);
begin_frame($language['comments'].'<load id="loadComments"></load>');
echo ($CURUSER ? stdmsg("Вы можете <a href=\"#upCommentForm\" onClick=\"upCommentForm();return false;\">добавить комментарий</a>") : "Вы вошли как <b>гость</b>" );
//Div для новых комментарий
echo '<div id="setComment"></div>';
//Проверка
if(!mysql_num_rows($sql))
{
stdmsg("Комментариев нет" , '' , 'error');
}
else
{
//Выводим в цикле комментарии
while($arr = mysql_fetch_object($sql))
{
echo '<div id="comment'.$arr->id.'">';
echo $arr->text;
echo '</div>';
}
}
end_frame();
}
?>
ПОМОГИТЕ ПОЖАЛУЙСТА