简体   繁体   English

从html表行填充数据

[英]Populating data from an html table row

The given snippet has a javascript function and a table in which I want to show content of each row using a modal. 给定的代码片段具有javascript函数和一个表格,我希望在表格中使用模式来显示每一行的内容。

But the problem is when I am using alert in middle for debugging for any number of row when I click in view button it always shows the first value of m_id but it must show the corresponding values. 但是问题是,当我在视图按钮中单击时,当我在中间使用警报调试任何行数时,它始终显示m_id的第一个值,但必须显示相应的值。 $v object is returning expected data only no problem in that. $v对象仅返回预期数据。

I need help since I am just a beginner in ajax. 因为我只是ajax的初学者,所以我需要帮助。

 <script type="text/javascript"> function view_message(){ //alert("aa gyaksjhfjxvhk"); var m_id = document.getElementById('m_id').value; var c_name = document.getElementById('c_name').value; var message = document.getElementById('message').value; alert(m_id); //alert(loc); $.ajax({ type: "POST", url: "view_message.php", data: { 'm_id' :m_id, 'c_name' : c_name, 'message' : message }, success: function(data){ // alert("success"); $(".message_container").html(data); } }); } </script> foreach($v_message as $v) { echo '<tr>'; echo '<td>'.$v->time.'</td>'; echo '<td>'.$v->c_name.'</td>'; echo '<input id="m_id" name="m_id" value="'.$v->id.'" hidden />'; echo '<input id="c_name" name="c_name" value="'.$v->c_name.'" hidden />'; echo '<input id="message" name="message" value="'.$v->message.'" hidden />'; echo '<td data-toggle="modal" data-target="#myModal">'; echo ' <input type="button" id="view" onclick="view_message()" value="view"></input>'; echo '</td>'; echo '<td data-toggle="modal" data-target="#myModal1"> <a href="#"><span>Delete</span></a>'; echo '</td>'; echo '</tr>'; ?> <div id="message_container"> </div> 

IDs must be unique in the document. ID在文档中必须唯一。 See: stackoverflow.com/a/9454716/2181514. 请参阅:stackoverflow.com/a/9454716/2181514。

Your for loop generates multiple items with the same id, so when you do $(#id you get the first one. 您的for循环生成具有相同ID的多个项目,因此当您执行$(#id您将获得第一个。

You can fix this by using classes and passing a reference to the current row: 您可以通过使用类并将引用传递给当前行来解决此问题:

Change 更改

onclick="view_message()"
<input id="m_id" name="m_id"

to

onclick="view_message(this)"
<input class='m_id' id="m_id" name="m_id"

then: 然后:

function view_message(el){
    var row = $(el).closest("tr");
    var m_id = $(".m_id", row).val();

Update: typo - should have been $(el).closest, not $(this) Example fiddle: https://jsfiddle.net/37tkgsnm/ 更新:错字-应该是$(el).closest,而不是$(this)示例小提琴: https ://jsfiddle.net/37tkgsnm/

html: 的HTML:

<tr>
  <td><input class='m_id' value='123' /></td>
  <td><button type="button" onclick="view_message(this);">click</button></td>
</tr>

js: js:

function view_message(el) {
    var row = $(el).closest("tr");
    alert($(".m_id", row).val())
}

change your selector $(.message_container) to $(#message_container) modified code is below. 将您的选择器$(.message_container)更改为$(#message_container)修改后的代码如下。

<script type="text/javascript">
function view_message(){
//alert("aa gyaksjhfjxvhk");
var m_id = document.getElementById('m_id').value;
var c_name = document.getElementById('c_name').value;
var message = document.getElementById('message').value;


alert(m_id);
//alert(loc);

$.ajax({
  type: "POST",
  url: "view_message.php",
  data:
  { 'm_id' :m_id,
    'c_name' : c_name,
    'message' : message
  },
  success: function(data){
  //  alert("success");

     $("#message_container").html(data);

  }
  });

}

</script>

because your selector is document, its find first element with target id, so always first row element return in result.in php code replace onclick="view_message()" with class="view-btn" and use my answer javascript, 因为您的选择器是文档,所以它会找到具有目标ID的第一个元素,因此总是将第一行元素返回到result.in php代码中,将onclick =“ view_message()”替换为class =“ view-btn”并使用我的答案javascript,

 <script type="text/javascript"> $(document).ready(function() { var view_message = function(){ var row = $(this).closest('tr'); var m_id = $(row).find('#m_id').val(); var c_name = $(row).find('#c_name').val(); var message = $(row).find('#message').val(); alert(m_id); } $(".view-btn").on('click', view_message); }); </script> foreach($v_message as $v) { echo '<tr>'; echo '<td>'.$v->time.'</td>'; echo '<td>'.$v->c_name.'</td>'; echo '<input id="m_id" name="m_id" value="'.$v->id.'" hidden />'; echo '<input id="c_name" name="c_name" value="'.$v->c_name.'" hidden />'; echo '<input id="message" name="message" value="'.$v->message.'" hidden />'; echo '<td data-toggle="modal" data-target="#myModal">'; echo ' <input type="button" id="view" class="view-btn" value="view"></input>'; echo '</td>'; echo '<td data-toggle="modal" data-target="#myModal1"> <a href="#"><span>Delete</span></a>'; echo '</td>'; echo '</tr>'; ?> <div id="message_container"> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM