Mam formularz na stronie i chcę, aby zdarzenie onsubmit wywoływała funkcje. Przez pół roku ten kod działał a teraz jest problem, bo funkcja w ogóle nie działa. Oto formularz
<?php
ob_start();
?>
<form action="public_files/post.php?id=<?php echo $id; ?>" method="post"
onsubmit="postComment(<?php echo $id; ?>, this); return false;">
<table>
<tr>
<td><label for="name_<?php echo $id; ?>">Imię: </label></td>
<td><input style="width: 100%;" type="text" name="person_name" id="name_<?php echo $id; ?>"/></td>
</tr>
<tr>
<td><label for="comment_<?php echo $id; ?>">Komentarz: </label></td>
<td><textarea rows="7" cols="50" name="post_comment" id="comment_<?php echo $id; ?>"/></textarea></td>
</tr>
<tr>
<td colspan="2" style="text-align: center;"><input type="submit" value="Dodaj komentarz"/></td>
</tr>
</table>
</form>
<?php
// doł±czenie kodu współużytkowanego
include '../lib/common.php';
include '../lib/db.php';
function Konwertuj_na_utf8($string) {
$utf8=array(
"%u0104"=>"Ą",
"%u0106"=>"Ć",
"%u0118"=>"Ę",
"%u0141"=>"Ł",
"%u0143"=>"Ń",
"%u00D3"=>"Ó",
"%u015A"=>"Ś",
"%u0179"=>"Ź",
"%u017B"=>"Ż",
"%u0105"=>"ą",
"%u0107"=>"ć",
"%u0119"=>"ę",
"%u0142"=>"ł",
"%u0144"=>"ń",
"%u00F3"=>"ó",
"%u015B"=>"ś",
"%u017A"=>"ź",
"%u017C"=>"ż"
);
return str_replace(array_keys($utf8),array_values($utf8),$string);
}
// odczytanie komentarzy do bież±cego wpisu
$id = (int)$_GET['post_id'];
$query = sprintf('SELECT PERSON_NAME, POST_COMMENT, ' .
'UNIX_TIMESTAMP(COMMENT_DATE) AS COMMENT_DATE FROM %sBLOG_COMMENT ' .
'WHERE POST_ID = %d ORDER BY COMMENT_DATE DESC',
DB_TBL_PREFIX, $id);
$result = mysql_query($query, $GLOBALS['DB']);
if (mysql_num_rows($result))
{
echo '<div class="komentarze">';
while($row = mysql_fetch_assoc($result))
{
echo '<p><span class="komentarz">'.Konwertuj_na_utf8(htmlspecialchars($row['PERSON_NAME'])). '</span>' .
' '.date('d.m.Y H:i:s', $row['COMMENT_DATE']). '<br/>';
echo Konwertuj_na_utf8(htmlspecialchars($row['POST_COMMENT'])).'</p>';
}
echo '</div>';
}
mysql_free_result($result);
mysql_close($GLOBALS['DB']);
ob_end_flush();
?>
A to funkcje JavaScript
// odczytanie istniej±cych komentarzy przy użyciu "AJAX"
window.httpObj;
function fetchComments(id)
{
var div = document.getElementById('comments_' + id);
var url = 'public_files/fetch.php?post_id=' + id + "&nocache=" +
(new Date()).getTime();
window.httpObj = createXMLHTTPObject();
window.httpObj.open('GET', url , true);
window.httpObj.onreadystatechange = function()
{
// wypełnienie pól
if (window.httpObj.readyState == 4 && httpObj.responseText)
{
div.innerHTML = httpObj.responseText;
}
}
window.httpObj.send(null);
}
// zapisanie komentarza przy użyciu "AJAX"
function postComment(id, form)
{
var url = form.action + "&nocache=" + (new Date()).getTime();
var data = 'person_name=' + escape(form.person_name.value) +
'&post_comment=' + escape(form.post_comment.value);
window.httpObj = createXMLHTTPObject();
window.httpObj.open('POST', url , true);
window.httpObj.setRequestHeader('Content-type',
'application/x-www-form-urlencoded');
window.httpObj.setRequestHeader('Content-length', data.length);
window.httpObj.setRequestHeader('Connection', 'close');
window.httpObj.onreadystatechange = function()
{
// wypełnienie pól
if (window.httpObj.readyState == 4 && window.httpObj.responseText)
{
if (window.httpObj.responseText.indexOf('OK')==0)
{
fetchComments(id);
}
else
{
alert('Błąd w trakcie zapisywania komentarza.');
}
}
}
window.httpObj.send(data);
return false;
}
Kod jest z książki i do tej pory działał. Gdzie jest błąd?