jquery 使用 AJAX 编辑和更新数据

deyfvvtc  于 2023-02-18  发布在  jQuery
关注(0)|答案(2)|浏览(174)

我的代码有什么问题。我想使用AJAX从可编辑的(表单)中检索数据,以更新和保存在数据库中,但它不工作,以及,
下面是我的代码:

<?php
    $query = db_get_list("SELECT * FROM stories ORDER BY id DESC");
    foreach($query as $item) {
        $id= $item['id'];
?>
        <?php var_dump($item['id']); ?>
        <tr>
            <th scope="row"><?php echo $item['id'];?></th>
            <td class="ttruyen" id="tentruyen_<?php echo $item['id'];?>" contenteditable="true">
                <?php echo $item["tentruyen"]; ?>
            </td>
            <td class="tgia" id="tacgia_<?php echo $item['id'];?>" contenteditable="true">
                <?php echo $item["tacgia"]; ?>
            </td>
            <td class="ttat" id="tomtat_<?php echo $item['id'];?>" contenteditable="true">
                <?php echo $item["tomtat"]; ?>
            </td>
            <td class="ndung" id="noidung_<?php echo $item['id'];?>" contenteditable="true">
                <?php echo $item["noidung"]; ?>
            </td>
            <td><button class="label delete label-danger" id='del_<?php echo $item['id']; ?>' ">delete</button></td>
            <td><button class="label edit label-info" id="edit_<?php echo $item['id']; ?>">edit</button></td>
        </tr>
<?php } ?>
    • 和AJAX编辑功能:**
$(document).on('click', '.edit' ,function() {
        var id = this.id;
        var split_id = id.split("_");
        var field_name = split_id[0];
        var edit_id = split_id[1];
        var value = $(this).text();

        var ttruyen =  $('#ttruyen').text();
        var tgia =  $('#tgia').text();
        var ttat =  $('#ttat').text();
        var ndung =  $('#ndung').text();
       $.ajax ({
           url : "modules/favorites/edit.php",
           type : "POST",
           dataType : "text",
           data : {
               tentruyen: ttruyen, tacgia: tgia, id:edit_id , tomtat : ttat, noidung : ndung
           },
           success: function (data) {
               $('#alert_message').html("<div class='col-sm-4 alert alert-success' ><b>Edit</b> data successfully</div>");
               fetchdata(data);
           }
       });
       setInterval(function() {
           $("#alert_message").html('');
       }, 3000);
    });
bq3bfh9z

bq3bfh9z1#

这是另一种方法。

<?php
$query = db_get_list("SELECT * FROM stories ORDER BY id DESC");
foreach($query as $item) {
    $id= $item['id'];
    var_dump($item['id']); ?>
    <tr>
        <th scope="row"><?php echo $item['id'];?></th>
        <td class="ttruyen" id="tentruyen" contenteditable="true">
            <?php echo $item["tentruyen"]; ?>
        </td>
        <td class="tgia" id="tacgia" contenteditable="true">
            <?php echo $item["tacgia"]; ?>
        </td>
        <td class="ttat" id="tomtat" contenteditable="true">
            <?php echo $item["tomtat"]; ?>
        </td>
        <td class="ndung" id="noidung" contenteditable="true">
            <?php echo $item["noidung"]; ?>
        </td>
        <td><button class="label delete label-danger" id="del">delete</button></td>
        <td><button class="label edit label-info" id="edit" data-id="<?php echo $item['id']; ?>">edit</button></td>
    </tr>
 <?php } ?>

上面的代码,删除了每个td中的所有$item['id']。它还为您的edit button添加了一个id。它还删除了不必要的代码。
为了获得所有需要的数据,

$('button#edit').on('click' ,function() {
    var id = $("p#item_id").text();
    var edit_id = $(this).data('id');

    var ttruyen =  $('td#ttruyen').text();
    var tgia =  $('td#tgia').text();
    var ttat =  $('td#ttat').text();
    var ndung =  $('td#ndung').text();

   $.ajax ({
       url : "modules/favorites/edit.php",
       type : "POST",
       dataType : "text",
       data : {tentruyen: ttruyen,
               tacgia: tgia,
               id:edit_id ,
               tomtat : ttat,
               noidung : ndung},
       success: function (data) {
           $('#alert_message').html("<div class='col-sm-4 alert alert-success' ><b>Edit</b> data successfully</div>");
           fetchdata(data);
       }
   });
   setInterval(function() {
       $("#alert_message").html('');
   }, 3000);
});

$("button#edit")会在td中单击特定按钮。因此,无需为每个按钮指定id="edit_<?php echo $item_id; ?>"。这应该可以工作。如果这是解决方案,请不要忘记将接受设置为正确答案。谢谢。

vs91vp4v

vs91vp4v2#

var field_name = split_id[0];
var edit_id = split_id[1];

Console.log(field_name+edit_id);

根据日志记录,我认为“id”的请求不是复数(数组)。

url : "modules/favorites/edit.php"

确保文件路径正确。

相关问题