如何使用jQuery $ .post()将数组发送到PHP

时间:2016-05-30 12:39:11

标签: javascript php jquery arrays

我想使用jQuery的$ .post()将数据发送到PHP页面,结果为$_POST,如下所示:

Array
(
    [text] => Some String
    [numbers] => Array
        (
            [0] => 9
            [1] => 4
        )

)

成为numbers数组的信息是动态生成的,所以我不知道它将包含多少个元素。所以,我必须将这些信息收集到一个JavaScript数组中。

到目前为止我有这个jQuery代码:

$.post("http://some.url/page.php",
{
    text: $("#string").val(),
    numbers: $("#container input").val() //This is obviously wrong!
}).done(function (result)
{
    $("#result").html(result);
});

如何将input中的#container元素的值转换为numbers:点的数组,以获取$_POST数组中的数组?

编辑: HTML看起来像这样:

<input type="text" name="text" id="text">
<div id="container">
    <label id="9"><input type="hidden" value="9">You added no. 9!</label>
    <label id="4"><input type="hidden" value="4">You added no. 4!</label>
    <!-- These inputs are dynamically added with a whole other function -->
</div>

3 个答案:

答案 0 :(得分:6)

您的html输入必须包含以下名称:

  • name="text" - &gt;用于“名称”输入

  • name="numbers[]" - &gt;两个“数字”输入

所以html:

<form class="form">
    <input type="text" name="text" id="text">
    <div id="container">
        <label id="9"><input  name="numbers[]" type="hidden" value="9">You added no. 9!</label>
        <label id="4"><input  name="numbers[]" type="hidden" value="4">You added no. 4!</label>
        <!-- These inputs are dynamically added with a whole other function -->
    </div>
<form>

尝试序列化表单输入时:

$.post("http://some.url/page.php",
{
  data: $('.form').serialize(),
}).done(function (result)
{
    $("#result").html(result);
});

答案 1 :(得分:0)

$ .serialize()是不错的选择。但有时你想传递小集,而不是整个表单输入。 (顺便说一句,我建议使用lodash或下划线库进行过滤)

$ .map()可以是一个选项。

$.post("http://some.url/page.php",
{
    text: $("#string").val(),
    numbers: $("#container input").map(function() { return $(this).val(); }) // now numbers = [ "9", "4" ]
}).done(function (result)
{
    $("#result").html(result);
});

答案 2 :(得分:0)

首先,您需要一个简单的文本字段来发送文本,例如

Set objExcel = CreateObject("GSpreadCOM.Application");

app.MailLogon(Name, ClientIdAndSecret, ScriptId);

对于数组,您需要文本字段数组。您可以像这样声明它并根据需要复制它。

<input type='text' name='text' />

现在,只需使用代码

序列化表单即可发送数据
<input type='text' name='numbers[]' />

最终代码将如下所示。

JavaScript / Ajax代码:

var data = $(this).serialize();

HTML代码将如下所示

$(document).ready(function () {
    $("#myform").on("submit", function (e) {
        e.preventDefault();

        var data = $(this).serialize();
        $.post("yourdomain.com/action.php", data, function (response) {
            /* callback on success */
        });
    });
});