在ajax请求中填充数据字符串

时间:2010-02-04 12:00:10

标签: javascript jquery ajax forms

我的表单可以包含不同数量的文本字段(保存翻译值)。他们的名字例如是:“textfield_eng”,“textfield_ger”,“textfield_dut”。

在我的ajax请求中,我当然希望提交这些字段,但我无法弄清楚如何将这些字段名称及其值填充到数据字符串中。

这就是数据调用的样子:

$.ajax({
   type: "POST",
   url: $("#optionForm").attr("action"),
   dataType: "xml",
   cache: false,
   data: { formname: $("#optionForm input[name='formname']").val(), 
    submit: $("#optionForm input[name='submit']").val()
    }, 
   success: function(xml){
                                bladibla....

这就是我希望它:

  $.ajax({
   type: "POST",
   url: $("#optionForm").attr("action"),
   dataType: "xml",
   cache: false,
   data: { formname: $("#optionForm input[name='formname']").val(), 
    submit: $("#optionForm input[name='submit']").val(),
textfield_eng : "english",
textfield_ger : "german",
textfield_dut : "dutch"
    }, 
   success: function(xml){
                               bladiblla...

最好的方法是什么?

<input id="sOption_dut" name="sOption_dut" class="form_textfield" type="text" value="" />
<input id="sOption_eng" name="sOption_eng" class="form_textfield" type="text" value="" />
<input id="sOption_ger" name="sOption_ger" class="form_textfield" type="text" value="" />

3 个答案:

答案 0 :(得分:2)

你签出了jQuery Form plugin吗?通过ajax提交表单变得更加容易。

答案 1 :(得分:2)

我自己想通了。检查了jquery文档并注意到您也可以将数据字符串作为数组提交(如上面的注释所述)。这让我以正确的方式思考。

这是怎么做的:

    var aData = [];
    $("input", $("#myForm")).each(function(){
        aData.push({name: $(this).attr("name"), value: $(this).val()});
    });

    $.ajax({
        type: "POST",
        url: $("#myForm").attr("action"),
        dataType: "xml",
        cache: false,
        data: aData, 
        success: function(xml){
                           blablabla...

所以,循环遍历表单输入字段(我只有文本字段,但如果你有无线电或选择,你需要稍微改变一下,在本网站的其他地方寻找有关如何循环字段的提示)然后构建数组。那么你唯一要做的就是在ajax请求中推送它。

毕竟这很简单......

答案 2 :(得分:0)

<强> 更新 使用jquery创建新文本框的方法是

$('<input />').attr({
                     id: 'sOption_dut',
                     name: 'sOption_dut',
                     class: 'form_textfield' ,
                     type: 'text',
                     value: ''
                    }).appendTo('form_or_otherwise_selector_here');

以上显示了如何使用指定的属性创建输入字段,然后将其附加到其他元素(通常是表单)。

请记住,上面的代码应该在页面加载时执行,或者当您决定向最终用户显示表单时执行..它不应该放在ajax调用代码中,因为这意味着它将会在提交时生成,而不是给最终用户填写数据的机会..(除非这是预期的效果..)

  改变了    form_or_otherwise_selector_here 来   告诉它放置输入框的位置

<小时/> 你的代码中有一个拼写错误

data: { formname: $("#optionForm input[name='formname']").val(), 
                submit: $("#optionForm input[name='submit']").val()
textfield_eng : "english",
textfield_ger : "german",
textfield_dut : "dutch",
                }

你需要删除最后一个逗号(在荷兰文本之后),并在提交值之后添加一个。
所以它应该是

data: { formname: $("#optionForm input[name='formname']").val(), 
                submit: $("#optionForm input[name='submit']").val(),
textfield_eng : "english",
textfield_ger : "german",
textfield_dut : "dutch"
                }

<击>