Интернет |
AJAX-запрос работает с перебоями. Как такое может быть?
В общем суть такая....
Есть некая разметка:
Человек кликает по этому комментарию-ссылке, и ему вместо него выскакивает поле для ввода:
Он такой вводит новый комментарий и всё, коммент обновляется в базе и челу в ответ выводится такая же ссылка с новым комментарием.
Это идея. Теперь о том, как это работает...
update_channel_comment(channelID)
insert_channel_comment(channelID, commentValue)
и, наконец, сама реализация запроса:
В принципе это работает, но... как-то странно.... добавляю коммент - добавляется. Изменяю - пустая строка. Изменяю второй раз - всё ок. Третий раз - всё ок. Четвертый раз - пустая строка. Никак не могу понять закономерность, а самое главное - выяснить, в чём прикол. PHP знаю, ajax знаком, вроде выводится всё то, дебажил, выводил различные переменные, всё норм... не могу понять, откуда такой странный глюк.
Есть некая разметка:
Цитата:
|
<td><div id="channel-1"><a href="#" onclick="update_channel_comment(1)">комментарий</a></div></td> |
Цитата:
|
<input type=\"text\" id=\"channelComment\" onBlur=\"insert_channel_comment("+channelID+", "+commentValue+")\"> |
Это идея. Теперь о том, как это работает...
update_channel_comment(channelID)
Цитата:
|
function update_channel_comment(channelID) { var channel = "#channel-"+channelID; var commentValue = $(channel).val(); var html = "<input type=\"text\" id=\"channelComment\" onBlur=\"insert_channel_comment("+channelID+", "+this.value+")\">"; $(channel).html(html); } |
Цитата:
|
function insert_channel_comment(channelID, commentValue) { if (commentValue !== '') { $.ajax({ type: 'POST', datatype: 'json', url: '/includes/ajax.php?request=insert_channel_comment', data: {'channel_id':channelID, 'comment':commentValue}, success: function(data) { var json = $.parseJSON(data); if (json.success == true) { var html = "<a href=\"#\" onclick=\"update_channel_comment("+json.channel_id+")\">"+json.updated_comment+"</a>"; var elem_id = "#channel-"+json.channel_id; $(elem_id).html(html); } else { alert(json.error); return false; } } }); } else { alert('Empty comment!'); } |
Цитата:
|
if ($_GET['request'] == 'insert_channel_comment') { $channel_id = $_POST['channel_id']; $comment = $_POST['comment']; global $sql; $data['channel_id'] = (int)$channel_id; $query = "UPDATE channels SET channel_comment = '".$sql->real_escape_string($comment)."' WHERE id = '".$channel_id."'"; $sql->query($query); if (empty($sql->error)) { $query = "SELECT channel_comment FROM channels WHERE id = '".$channel_id."'"; $result = $sql->query($query); $result_row = $result->fetch_row(); $data['updated_comment'] = $result_row[0]; $data['success'] = true; } else { $data['success'] = false; $data['error'] = $sql->error; } die(json_encode($data)); } |