动态生成的表单仅提交mysql表的最后一行ID

时间:2017-09-11 19:51:13

标签: javascript php forms

我有一个动态生成的表单。它只有一个文本输入,其值是从数据库表(table_one)动态获取的ID。我的目标是将此ID提交到另一个表(table_two)。在我的页面上,我可以看到从table_one获取的这些ID说:1,2,3,4,5,但是当我提交任何这些ID时,请说“' 2'”,它只是最后一个ID&# 39; 5'将提交给table_two。如何修改我的代码,以便在我提交第2行时,ID' 2'将不会提交' 5'?以下是我的代码。

HTML

<form>
     <input type="text" id="name" name="name" value="<?php echo $name_id;?>" >
     <button type="submit" onclick="return chk()">Edit</button>
</form>

JAVASCRIPT

function chk(){
    var name = document.getElementById('name').value;
    var dataString = 'name='+ name;
    $.ajax({
        type:"post",
        url:"test.php",
        data:dataString,
        cache:false,
        success: function(html){
            $('#msg').html(html);
             }
        });
    return false;
}

PHP

$name = $_POST['name'];
echo "$name";

1 个答案:

答案 0 :(得分:1)

您必须添加唯一标识符或使用DOM。您的案例的简单解决方案是:

HTML

<input type="text" id="name-<?php echo $name_id;?>">
<button type="submit" onclick="return chk(<?php echo $name_id;?>)">Edit</button>

的Javascript

function chk(name_id){
    $.ajax({
        type:"post",
        url:"test.php",
        data: { 
            id: name_id, 
            name: $('#name-'+name_id).val() 
        },
        cache:false,
        success: function(html){
            $('#msg').html(html);
         }
        });
    return false;
}

并传递要更改的行的ID。在服务器上,您处理来自$ _POST的两个值。希望这会有所帮助。

顺便说一下,在这个AJAX场景中你不需要表单元素。