Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2012, 15:54
Новичок на форуме
Отправить личное сообщение для Astraport Посмотреть профиль Найти все сообщения от Astraport
 
Регистрация: 17.07.2012
Сообщений: 5

JS Ajax отправляет данные несколько раз
Всем привет!

Сам написал простейшую голосовалку чтобы юзеры могли оценивать пост +1 или -1. JS дергает нужные PHP скрипты и данные заносятся в базу. Но что-то скрипт глючит. Иногда (особенно если проголосовать сначала за другие посты) начисляется сразу 3 или 6 голосов. В чем может быть проблема никак не пойму. Вот скрипт:

<script type="text/javascript" src="raitings/jquery.js"></script>
<script type="text/javascript">$(function() {$(".vote").click(function() {

var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var parent = $(this);

if(name=='down')
{
$(this).fadeIn(200).html('<img src="raitings/dot.gif" align="absmiddle">');
$.ajax({type: "POST", url: "raitings/down_vote.php", data: dataString, dataType : "html", cache: false, success: function(html)
   { parent.html(html);}
 });
}
else
{
$(this).fadeIn(200).html('<img src="raitings/dot.gif" align="absmiddle">');
$.ajax({type: "POST", url: "raitings/up_vote.php", data: dataString, dataType : "html", cache: false, success: function(html)
   { parent.html(html);
  }  });
}
return false;
	});
});
</script>

<?php
					echo "<div class=\"box1\"><div class=\"up\"><a href=\"#\" class=\"vote\" title=\"+ 1\" alt=\"+ 1\" id=".$row["id"]." name=\"up\">".$up."</a></div>"
						."<div class=\"down\"><a href=\"#\" class=\"vote\" title=\"- 1\" alt=\"- 1\"  id=".$row["id"]." name=\"down\">".$down."</a></div></div>\n";


PHP не привожу, т. к. он отвечает только на зачисление баллов в базу.

Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2012, 17:02
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Всё нормально, один раз отсылаются данные http://learn.javascript.ru/play/67YXJb
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2012, 18:30
Новичок на форуме
Отправить личное сообщение для Astraport Посмотреть профиль Найти все сообщения от Astraport
 
Регистрация: 17.07.2012
Сообщений: 5

Цитата:
Всё нормально, один раз отсылаются данные
Может ПХП виноват?
<?php
include("configdb.php");

$ip=$_SERVER['REMOTE_ADDR']; 

if($_POST['id'])
{
$id=$_POST['id'];
$id = mysql_escape_String($id);

$ip_sql=mysql_query("select ip_add from Voting_IP where mes_id_fk='$id' and ip_add='$ip'");
$count=mysql_num_rows($ip_sql);

if($count==0)
{
$sql = "update book set up=up+1  where id='".$id."'";
mysql_query( $sql);

$sql_in = "insert into Voting_IP (mes_id_fk,ip_add) values ('$id','$ip')";
mysql_query( $sql_in);
}
else
{
}

$result=mysql_query("select up from nlbook where id='$id'");
$row=mysql_fetch_array($result);
$up_value=$row['up'];
echo $up_value;
}
?>
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2012, 19:08
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Строка 26 по логу, точно название таблицы nlbook? В 16 строке обновляли данные таблицы book.
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2012, 19:17
Новичок на форуме
Отправить личное сообщение для Astraport Посмотреть профиль Найти все сообщения от Astraport
 
Регистрация: 17.07.2012
Сообщений: 5

Спасибо за внимательность. Это я так неаккуратно изменял названия таблиц с целью безопасности
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2012, 19:36
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

О_о тогда уж надо называть jg3rt37r5654
Заработало?
Ответить с цитированием
  #7 (permalink)  
Старый 17.07.2012, 20:20
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Кстати что вспомнил: с целью безопасности ставят префиксы, например так jg3rt37r5654_book, jg3rt37r5654_users и т.д.
Ответить с цитированием
  #8 (permalink)  
Старый 17.07.2012, 20:47
Новичок на форуме
Отправить личное сообщение для Astraport Посмотреть профиль Найти все сообщения от Astraport
 
Регистрация: 17.07.2012
Сообщений: 5

Я видимо неправильно выразился. Я изменил названия таблиц ТОЛЬКО для форума. В продакшене все работает как нужно за исключением неверного начисления баллов.
Ответить с цитированием
  #9 (permalink)  
Старый 18.07.2012, 11:41
Новичок на форуме
Отправить личное сообщение для Astraport Посмотреть профиль Найти все сообщения от Astraport
 
Регистрация: 17.07.2012
Сообщений: 5

Задача не имеет решения? Куда хоть копать подскажите?
Ответить с цитированием
  #10 (permalink)  
Старый 18.07.2012, 12:21
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Я не вижу других ошибок.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Ajax. Полноценная подгрузка страниц, содержащих CSS и JS. Alex22 AJAX и COMET 6 05.11.2008 23:53
Нужно с помощью JS записывать данные в БД d!mm Общие вопросы Javascript 2 01.11.2008 18:36
Выучить JS раз и навсегда AlexPa Общие вопросы Javascript 16 27.10.2008 13:14
ajax запрос с подгружемным js HelpeR AJAX и COMET 1 27.10.2008 12:44