2016-10-16 3 views
0

У меня есть функция, гденагрузки() JQuery показаны результаты дважды Jquery

//s > selector which define the number of Sql results given by results.php?selector=s 

jQuery.fn.ShowResults = function(s){ 

$("#results").load("results.php?selector="+s); 
} 

    $("#results").ShowResults(1); 

$("#show1").on("click", function(e){ $("#results").ShowResults(1);}); 
$("#show2").on("click", function(e){ $("#results").ShowResults(2);}); 
$("#show3").on("click", function(e){ $("#results").ShowResults(3);}); 

У меня по умолчанию selector=1;

<a id=show1>Show 1</a> 
<a id=show2>Show 2</a> 
<a id=show3>Show 3</a> 

<ul id=results></ul> 

СКП является

$s=$_GET['selector']; 
SELECT * WHERE condition AND selector='$s' 

PHP

$results=mysql_query("SELECT * WHERE condition AND selector='$s'"); 

while($res=mysql_fetch_array($results)){ 

$data=$res['names']; 
echo "<li>$data</li>"; 
} 

проблема заключается в том, что иногда это выглядит как функция вызывается дважды, и показывает те же результаты повторяются, как этот

<ul id=results> 
     <li>AAA</li> 
     <li>BBB</li> 
     <li>CCC</li> 
     <li>AAA</li> 
     <li>BBB</li> 
     <li>CCC</li> 
    </ul> 

I hav e попытались использовать event.preventDefault(); и event.stopPropagation(); без решения

Вопрос в том, как остановить эту функцию? Похоже, что в любое время я нажимаю на якоря, я вызываю дважды одну и ту же функцию и конфликтует с установленным по умолчанию

+0

Что возвращается с 'php'? – guest271314

+0

Отправлено. спасибо – Max

ответ

0

mysql_fetch_array($results) возвращает результат как по ассоциативным индексам, так и по номерам индексов, поэтому он показан дважды.
использование mysql_fetch_row($results) вместо.

Тип возвращаемого массива зависит от того, как определяется result_type. Используя MYSQL_BOTH (по умолчанию), вы получите массив с ассоциативными и числовыми индексами. Используя MYSQL_ASSOC, вы получаете только ассоциативные индексы (как работает mysql_fetch_assoc()), используя MYSQL_NUM, вы получаете только числовые индексы (как работает mysql_fetch_row()).

+0

Но это происходит только 1 из 50. Если использовать fetxh – Max

+0

Но почему эта ошибка происходит только пару раз? – Max

+0

echo '$ result', чтобы увидеть, возвращает ли он смешанный, ассоциативный или нумерованный массив. Таким образом, вы можете видеть, когда это произойдет. – WLatif

Смежные вопросы