【问题标题】:how to display data from DB on the .append input field如何在 .append 输入字段上显示来自 DB 的数据
【发布时间】:2017-05-18 15:23:50
【问题描述】:

我有一个按钮,可以创建一个新的输入字段和一个默认字段

<div class="container1">
   <button class="add_form_field">Add Title</button>
   <div class="form-group label-floating">
      <input type="text" id="title_name">
   </div>
</div>

这是创建新输入字段的 jquery。

var max_fields      = 10;
var wrapper         = $(".container1"); 
var add_button      = $(".add_form_field"); 

var x = 1; 
$(add_button).click(function(e){ 
    e.preventDefault();
    if(x < max_fields){ 
        x++; 
        $(wrapper).append('<div><input type="text" id="title_name"/><a href="#" class="delete">Delete</a></div>'); //add input box
    }
else
{
alert('You Reached the limits')
}
});

$(wrapper).on("click",".delete", function(e){ 
    e.preventDefault(); $(this).parent('div').remove(); x--;
});

我有 ajax 调用根据登录的用户从我的数据库中获取标题名称。

$.ajax({
        url:'../ajax/getprofile.php',
        type:'POST',
        data:{userid:user},
        dataType:'JSON',
        success: function(result){
        $('#title_name').val(result.title_name);
        }
});

当我使用console.log(result) 查看返回的数据时,我的 ajax 请求只返回了一个数据..

我只是没有在我之前的问题中包含其他数据,因为这些数据只返回一个数据.. 我只有 title_name 有问题

此代码仅适用于默认输入字段..就像我的数据库中的数据只显示在默认输入字段上而不是附加输入字段上..

说我的用户 ID 为 10001,我的数据库看起来像这样 tbl_title

id    |   name
10001 | sample
10001 | test

我想要实现的是,当我从 ajax 发出请求并返回请求的值时,它将显示在我的输入字段上。由于我的 id 类似于 tbl_title (id),它应该在输入字段。但不幸的是,只有第一个数据只显示在默认输入字段上,我想做的是,如果数据大于 1,它也会显示在附加的输入字段上。但我不知道这是如何工作的。 .

b4 我只有一个正在返回的数据,所以我更新了我的 mysql 以返回所有具有相似 id 的数据,所以现在我得到了 array1array2 array1 在图片上,而 array2 类似于图片但唯一的区别是他们的title_name..那么我应该怎么做才能在我的输入字段的数组上显示我的两个title_name

【问题讨论】:

  • 2 个元素的 ID 不能相同。 ID 应该始终是唯一的。浏览器假定只有一个元素具有找到的 ID,并在第一个元素中设置数据。另外,我们不知道的是,当AJAX请求同时有数据时,响应的结构是什么?
  • 我检查了一下,只有一个被退回。即使我有两个具有相同 id 的 title_name 并且我的 mysql 查询显示两个数据。
  • 确保将 SQL 查询结果序列化为 JSON 格式并将其回显到请求页面
  • 在 ajax 请求后返回的数据是 json_encode 但我不知道为什么但是只有一个数据被返回..
  • 它可能会返回所有内容,但您的 jQuery 选择器只选择第一个(因为 id)...

标签: javascript jquery html mysql ajax


【解决方案1】:

每个输入的 id 都是相同的。所以 jQuery 在这一行中占据了第一个位置:

$('#title_name').val(result.title_name);

这就是为什么只有第一个输入有效...

尝试像这样改变它:

$(wrapper).append('<div><input type="text" id="input_' + x + '"/> ...

和:

$('#input' + x ).val(result.title_name);

可能不完全正确,但朝着正确的方向推进 ;) id 是问题所在。

【讨论】:

  • 是的,根据您的信息,我无法为您提供完整的工作 sn-p。我不知道你的 ajax 是什么以及它返回什么。问题是您针对所有输入,而 jquery 提供了第一个(因为 id)......可能您必须使用一个类并且在 ajax 成功时使用类似 jQuery('.class').each 或迭代你的回报。 ..
  • 当我尝试更改`$('#title_name'+x).val(result.title_name);` 并根据您的建议进行附加时,似乎我的 ajax 仅针对默认输入字段不是附加的输入字段..因为替换后我重新加载页面并且数据没有显示在默认输入字段上。
  • 是的,抱歉,这可能是错误的方法,因为您的 ajax 中没有循环。完全删除 id ...您想选择多个输入,所以这不会有帮助(很可能)。您能否更新您的问题,以便我们查看您的 ajax 返回的结果?
  • 好的,这里有两个问题......您应该以某种方式遍历您的结果。但是 getprofile.php 似乎没有返回返回多个条目......你必须先解决这个问题,然后你的 javascript-side-part 才能正确地做任何事情
  • 那么让我们知道问题出在哪里
猜你喜欢
  • 2018-02-24
  • 2021-05-28
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 2019-02-21
相关资源
最近更新 更多