2013-08-08 5 views
0

У меня есть приложение, которое, похоже, работает довольно хорошо, за исключением одного небольшого сбоя, который я не могу понять. Я надеюсь на помощь здесь.Динамическая строка добавлена ​​только при первом щелчке

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

Флажок работает отлично, но ссылка на изображение работает только в первый раз, а не в следующем.

Это изображение линии:

<img src="img/plus.png" width="25" height="25" id="btnAddRow" title="Add New Row" class="idfirst alternativeRow" /> 

alternativeRow генерируется из кода здесь: http://www.examplet.buss.hk/jquery/table.addrow.php (пример # 10, но гораздо сложнее), и заключается в следующем:

$(".alternativeRow").btnAddRow({oddRowCSS:"oddRow",evenRowCSS:"evenRow"}); 

«idfirst» блок кода jquery:

$(document).ready(function(){ 
$(".idfirst").click(function(){ 
    result = 0; 
    id = 0; 
    jQuery.ajax({ 
     url: 'getItemID.php?q=<?php echo $q; ?>', 
     success: function(result) { 
      id = result; 
      if(result.isOk == false) 
       alert(result.message); 
     }, 
     async: false 
    });   
    window.location.href='page.php?q=<?php echo $q; ?>&id=<?php echo $id; ?>';  
}); 
}); 

Я делаю перезагрузку, потому что хочу новый номер, созданный в getItemID.php для динамической загрузки. Это важно, потому что оно также добавляется к ссылке, которая создается в новой строке. Код в getItemID выглядит следующим образом:

$q = $_GET['q']; 
$description = $_GET['description']; 
$rate = $_GET['rate']; 
$hours = $_GET['hours']; 

$query = "INSERT INTO items (q, description, hours, rate) VALUES ('".$q."','".$description."','".$hours."','".$rate."')"; 

$results = mysql_query($query) or die(mysql_error()); 
$nextId = mysql_insert_id(); 

echo $nextId; 

Так что моя проблема в том, что когда я щелкните ссылку в первый раз, все отлично работает, и я получаю мою пустую строку, ссылки в динамической работе ряда должным образом, жизнь хороша.

Но как только я нажму на него второй раз, страница перезагрузится, но я не получу свою новую строку. Он будет возвращать только существующие строки перед обновлением.

Мне интересно, может ли кто-нибудь увидеть что-то, что я делаю неправильно, и предложить любой совет. (Да, я понимаю, что некоторые из них, возможно, не идеальный способ заставить его работать, но по большей части он работает так, как мне это нужно ... и я потратил много часов, чтобы сделать все эти перемещения части ладят).

Заранее благодарю за любой совет.

+0

Эта линия изображений создана для каждой строки?Если это так, у него не может быть ID, jQuery будет отвечать только на первый элемент на странице, если есть элементы с дублирующимся идентификатором –

+0

. Я вижу, что вы - селектор jquery - это класс изображения $ (". AlternativeRow"). Вы уверены, что это не меняется в процессе? –

+0

Спасибо, ребята, за ваши комментарии. Эта линия изображения появляется только один раз подряд под таблицей. Строки содержимого загружаются через цикл, после чего добавляется эта строка. @Kalid: jQuery alternativeRow встречается только один раз, и это ни в одном из циклов ... Это то, что вы имеете в виду? –

ответ

0

Мне удалось разобраться.

Я тестировал это в IE, который все пользователи будут использовать. Такая же проблема в Firefox, которую я использую.

Я столкнулся с этой статьей http://www.electrictoolbox.com/jquery-json-ajax-caching/, и как только я попробовал ее в Chrome, это оказалось проблемой браузера. Таким образом, я осуществил следующие решения:

Я добавил

$.ajaxSetup({ cache:false }); 

к началу моего сценария, и для хорошей меры, добавил

cache: false, 

к моему АЯКС вызова.

Теперь он отлично работает повсюду.

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