【问题标题】:send dynamically created input values to PHP using get request使用 get 请求将动态创建的输入值发送到 PHP
【发布时间】:2011-05-26 02:19:56
【问题描述】:

我有一个表格。我允许用户通过按下按钮来添加额外的输入:

$('#add_multi_item').click(function(){

                $('<input />').attr({'type':'text', 'id':'response_input_' + next_add_id}).appendTo('#multi_responses');
                next_add_id++;
            });

我的表单是这样提交的:

$("#add_form").bind('submit', function(event){ 
         event.preventDefault();
         $.get('file.php', {poll_type_select: $("#poll_type_select option:selected").val(), question_input: escape($("#question_input").val()), type: "add_poll", user_id:user_id}, function(data) {
                    $('#added').show().html(data);
                    $('#added').hide(7000);
                    $('#question_input').val('');
                    loadList();
                });
    });

如何将这些动态创建的输入值添加到 get 请求中?我猜有些人使用名称数组来发帖,但我可以做类似的事情吗?我也认为我必须在发送之前对所有输入进行转义(),以防止在添加到数据库时出错。

我在想的一个选项是发送一个值,一个使用以下内容创建的分隔字符串:

$("#multi_responses input").each(string+=escape($(this).val())+"delimiter");

但我不知道这是否是最好的方法。如果我这样做,典型的分隔符是什么?

谢谢。

【问题讨论】:

    标签: php jquery forms input get


    【解决方案1】:

    没错,你只需要给这些输入一个name 属性,比如:

    $('<input />').attr({'type':'text', 'id':'response_input_' + next_add_id, 'name': 'response_input[' + next_add_id + ']'}).appendTo('#multi_responses');
    

    【讨论】:

    • 添加使用 POST 而不是 GET。并允许默认的表单提交来做它的事情。
    • 我同意 POST 方法,但实际上,如果 vee 想要发出 ajax 请求,正确的做法是阻止表单提交 - 但正如 jm 所说,POST 会更好。
    • 感谢您的回复。所以我现在理解了那部分,但是我如何通过我的获取请求发送该名称数组?这不起作用:'multi_responses[]':$("#add_form input[name=response_input[]]").val().
    • 我通过 ajax 而不是默认提交表单有几个原因:首先,我不希望它重定向到新页面,我将响应添加到 div,其次,我在 js 中使用 escape() 更改了一些字段,第三,我将我的一个 js 变量 (user_id) 与请求一起发送。但是在ajax请求中,POST比GET有什么优势呢?
    • POST 请求将是最正确的方法,但没有绝对的规则表明“POST 优于 GET”。这更像是一个相对问题,取决于每种情况的特征。我认为这是另一个讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多