English 中文(简体)
获取由 Ajax 、 动态输入字段和静态输入字段装入的窗体输入字段的值
原标题:Get the value of form input fields loaded by Ajax, dynamic input fields and static input fields

这有点复杂,我希望我说对了

我有一个表格, 包含一个选项列表, 从一个静态输入开始 :

<span id="keyword_list_out" class="input"><input class="keys margin-bottom" type="text" name="keywords[]" />

当页面被装入时, Ajax 调用显示属于列表的额外输入字段,例如:

<span class="field-wrapper"><input class="keys" type="text" name="keywords[]" value="Option One" /><a class="remove-keyword" href="javascript:void(0);"><img src="images/icons/cross-button-icon.png" /></a></span>
<span class="field-wrapper"><input class="keys" type="text" name="keywords[]" value="Option Two" /><a class="remove-keyword" href="javascript:void(0);"><img src="images/icons/cross-button-icon.png" /></a></span>

这些选项被预设到第一个静态输入字段 ID: keyword_list_out 的顶端。

用户可以动态地添加更多的输入字段,还可以删除现有的字段。

到目前为止,所有这一切都很好。我的问题是访问输入字段中包含的数据。我需要能够在提交表格后履行三项功能:

  1. If the user has removed an option I need to remove this from the database
  2. If the user has added a field I need to insert this into the database
  3. If the user changes the value of an existing field I need to update this in the database

我可以用输入名关键字_ name[] 作为数组, 访问输入字段中的数据, 然后我就可以绕过数组 。

但是,此选项并不处理有特定 ID 编号的现有选项。 我可以为从 Ajax 调用中装入的字段指定 ID 编号, 但是静态字段和用户添加的字段不会有 ID 编号, 因为不需要这些编号。 这些字段将直接插入数据库 。

所以我猜我想我的问题是 我如何去决定 哪些现有选项属于数据库的 ID 编号。我应该补充一下,这些选项并非唯一的名字。

我考虑过一些东西,比如:

  1. Provide ID numbers only for the Ajax loaded fields
  2. Upon submit loop through each input and prepend the ID to the end of the name value using a delimiter the user wont provide. IE: Option Two---1
  3. With PHP looping through the array and exploding the array value where it matches ---
  4. If a match was found on --- update the database, else insert into the database

有什么想法吗?

最新更新

我将输入字段分为两个数组:现有_options[]和新_options[]。

在张贴前的Jquery脚本中,

var existing_options = $( input[name=existing_options] ).attr( value );
var new_options = $( input[name=new_options] ).attr( value );

发送的 Ajax 数据为 :

 existing_options[]=  + existing_options +  &new_options[]=  + new_options;

然而, PHP 正在返回这些值是字符串而不是数组。 这里缺少一些... 。 @ info: whatsthis

最佳回答

我建议在数据库侧面使用自动递增 ID 。 在装入页面时, 请将 ID 设置为 < code_ lt; span 类=" field- wrapper" id = "$row[id] " & gt; , 而不是删除使用 :

$( .remove-keyword ).on( click , function(){
    var id = $(this).parents( span ).attr( id );
    place ajax post here with data sent being this id.
});

基本上对于添加关键词来说是一样的, 但使用 ajax 来发布您的脚本, 并且使用 < code> mysql_ Indiel_ id (); 在您的脚本中作为返回的 id 而不是动态创建下一行 。

问题回答

当字段通过 AJAX 指定 ID 以通过 AJAX 装入时

<input class="keys" type="text" id="keyword_11" name="keywords[]" value="Option Two" />
<input class="keys" type="text" id="keyword_12" name="keywords[]" value="Option Two" />

提交时单击 jQUery, 您可以通过关键字循环

var new_keywords=Array();
var existing_keywords=Array();
$("input[name^= keywords ]").each(function(){
  var id = $(this).attr("id");
  var val=$(this).val();
  if(id=="" && val!="")
  {
   new_keywords.push($(this).val());
  }
  else if(id!="")
  {
    var keyword_id=id.split("_")[1];
    existing_keywords.push({"id":keyword_id,"val":val});
  }
});

 // call AjAX function add new_keywords to database
 // call Ajax function to update existing keywords

<强 > UPATE 1

在数据库中添加新关键字的成功函数中, 通过 AJAX 更新现有的 DOM, 这样如果您添加了新关键字, 那么您就会编辑它, 并尝试保存它, 它将拥有与其相关的 ID 。





相关问题
ajax login using httpRequest?

I am trying to develop my login script to give feedback to the user if the login is valid or not. Basically if it isn t correct a div box will show saying its wrong, if its correct it will show its ...

Virtual Tour using sketch up, ajax, flash technologies

I want to know if there are existing technology that make your 3d models in sketch into virtual tours, using either Ajax or Flash for web presentation. If there s none, which will be a good approach ...

How can i update div continuously

I have asp.net application where i have a div which showing the value from other site. The value of that site is changing continuously. I want that my div will automatically update in some interval ...

热门标签