1

我有许多通过 jQuery 动态添加的文本框。他们都有相同的名字,比如......

<input type="text" name="employer" id="employer" />
<input type="text" name="position" id="position" />
<input type="text" name="city" id="city" />

<input type="text" name="employer" id="employer" />
<input type="text" name="position" id="position" />
<input type="text" name="city" id="city" />

so many...

我通过 AJAX 传递所有文本框值,但它不起作用。我的 AJAX 代码如下..

AJAX

$.ajax(
    {
      type: "POST",
      url: $("#cfgRoot").val()+'/accounts/educationInfoPost.php',
      data:
      {
        employer:$("#employer").val().trim(),
        position:$("#position").val().trim(),
        city:$("#city").val().trim()
      }
});

提前致谢

4

3 回答 3

3
var empName = $("input[name=employer]").map(function(){
   return $(this).val();
}).get().join(",");

并将其传递给 ajax 数据。

代码


var empName = $("input[name=employer]").map(function(){
   return $(this).val();
}).get().join(",");

var position = $("input[name=position]").map(function(){
   return $(this).val();
}).get().join(",");

var city = $("input[name=city]").map(function(){
   return $(this).val();
}).get().join(",");


$.ajax(
{
    type: "POST",
    url: $("#cfgRoot").val()+'/accounts/educationInfoPost.php',
    data:
    {
        employer:empName,
        position:position,
        city:city
    }
});

还有一件事不要为 DOM 添加相同的 ID。

每个 DOM 的 ID 必须是唯一的

于 2013-02-11T10:53:46.323 回答
1

您认为当您给 2 个输入提供相同的名称和相同的 ID 时会发生什么?

如果您有多个输入,并且您希望它们具有相同的名称,那么您至少应该给它们提供相似的名称。

就像是

<input type="text" name="employer1" class="employer" />
<input type="text" name="position1" class="position" />
<input type="text" name="city1" class="city" />

或者,您可以将它们提供给数组

<input type="text" name="employer[]" class="employer" />
<input type="text" name="position[]" class="position" />
<input type="text" name="city[]" class="city" />

至于通过 AJAX 发送此数据,您可能只想序列化整个表单。当然,这是基于您希望一次性发送所有表单数据的假设。

var serializedForm = $('form').serialize();
$.ajax(
{
    data: serializedForm,
    //rest of the code here
});
于 2013-02-11T10:53:45.957 回答
0

您的字段 ID 不是唯一的,请尝试使您的 ID 唯一,它应该可以工作。

于 2013-02-11T10:57:18.667 回答