2013-09-25 6 views
1

У меня есть 3 столбца, и значения столбцов продолжают динамически меняться из базы данных. Все строки имеют кнопку обновления в последнем столбце.Как перезагрузить только одну строку

Что произойдет, когда я нажму кнопку «Обновить», будет только обновлена ​​эта конкретная строка.

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

Вот код, который я использовал:

Аякса, JQuery

<script type="text/javascript"> 
    var id; 

    function refreshRecord(value) { 
     id = value; 
     alert("id is " + id); 
    } 

    $(document).ready(function() { 
     $(this).("#refresh").click(function() { 
      var fileId = id; 
      alert("ajax id is " + id); 
      $.ajax({ 
       type: "post", 
       url: "checkStatusAndNumRecs", 
       data: { 
        fileId: fileId 
       }, 
       success: function(data) { 
        $("#div1").html(data); 
       }, 
       error: function(data) { 
        $("#div1").html("It was a failure !!!"); 
       } 
      }); 
     }); 
    }); 
</script> 

HTML код

<table border="1"> 
    <tr> 
     <td>2</td> 
     <td>1</td> 
     <td>3</td> 
     <td> 
      <input type="radio" name="submit" value="submit" onclick="refreshRecord(this.value)" id="refresh"> 
     </td> 
    </tr> 
    <tr> 
     <td>7</td> 
     <td>9</td> 
     <td>7</td> 
     <td> 
      <input type="radio" name="submit" value="submit" onclick="refreshRecord(this.value)" id="refresh"> 
     </td> 
    </tr> 
    <tr> 
     <td>3</td> 
     <td>4</td> 
     <td>6</td> 
     <td> 
      <input type="radio" name="submit" value="submit" onclick="refreshRecord(this.value)" id="refresh"> 
     </td> 
    </tr> 
    <tr> 
     <td>9</td> 
     <td>6</td> 
     <td>5</td> 
     <td> 
      <input type="radio" name="submit" value="submit" onclick="refreshRecord(this.value)" id="refresh"> 
     </td> 
    </tr> 
</table> 
+0

Я не вижу кнопок в вашем коде и не имеет элемента с идентификатором '# refresh'. Расширьте свой код со всеми связанными частями. – Raidri

+0

@ Raidri Я редактировал сообщение. – MintY

ответ

2

У вас есть несколько радиокнопок с одинаковыми идентификаторами. Это недопустимый html. Используйте класс вместо как

<input type="radio" name="submit" ... class="refresh"> 

и изменить JavaScript для

$("input.refresh").click(function() { 

Далее вы не должны использовать два различных onclick события для одного события (я даже не уверен, что они будут правильно порядок, может быть случайным.)
Вы можете удалить onclick="refreshRecord(this.value)" из вашего HTML и функцию refreshRecord из вашего JavaScript и заменить id с this.value в $("input.refresh").click(function() { ... }).

+0

Спасибо Raidri, и как использовать, если в случае использования вместо типа ввода? – MintY

+0

Замените '$ (" input.refresh ")' на '$ (" a.refresh ")'. То, что вам еще нужно сделать, - это положить id/fileid строки в кнопку/ссылку обновления, чтобы у вас был идентификатор для вашего вызова ajax. В первом коде у вас было одинаковое значение 'submit' на всех кнопках. Если вы используете ссылки, поместите в них атрибут данных как 'data-fileid =" 1 "' и используйте 'var fileId = $ (this) .data ('fileid');' в вызове ajax. – Raidri

+0

Вот [Fiddle] (http://jsfiddle.net/9z2Hz/) с изменениями. – Raidri

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