【问题标题】:build php array using jquery使用 jquery 构建 php 数组
【发布时间】:2010-07-07 06:31:41
【问题描述】:

我有一个选择框,其中有一个项目列表,他为每个选定的选项输入值并保存它。 我写了一个类似的函数。

$('.add_recordings').click(function () {
    if (($('#recordings_name').val() != '') && ($('#recordings_value').val() != '')) {
        if ($('#recordings').val() == '') {
            var result = $('#recordings_name').val() + '=' + $('#recordings_value').val();
            $('#recordings').html(result);

            var result1 = $('#recordings_name').val() + '=>' + $('#recordings_value').val();
            $('#recordings_array').val(result1);
        }
        else {
            var result = ', ' + $('#recordings_name').val() + '=' + $('#recordings_value').val();
            $('#recordings').append(result);

            var result1 = ', ' + $('#recordings_name').val() + '=>' + $('#recordings_value').val();
            alert(result1);
            $('#recordings_array').append(result1);
        }
    }

});

recordings_array 的附加功能不起作用,它是文本类型的输入。

我要做的是使用 jquery 构建一个 php 数组,以便可以在 $_POST 中传递它。有没有更好的方法来做到这一点?

【问题讨论】:

  • 您想通过 Ajax 发送数据吗?

标签: php jquery


【解决方案1】:

recordings_array 的附加功能不起作用,它是 文本类型的输入

为什么不设置它的值而不是追加?

$('#recordings_array').val(result1);

编辑

如果你想附加值,在 jQuery 1.4 上很容易

$('#recordings_array').val(function(i,val){
    return val + result1; 
    // this will get the current value of the input (val), 
    // add result1, then return the result as the new value of the input
});

低于 jQuery 1.4

$('#recordings_array').val($('#recordings_array').val() + result1);

【讨论】:

  • 看到我需要像 a=>b、b=>c 那样构建和排列,所以我需要一个附加函数来附加每个键=>值对。选择框是 10 个项目的列表。他选择 1 个选项并为其输入值,然后他选择第 2 个选项并为其输入值并单击添加。所以点击添加我需要这样做。
【解决方案2】:

如果您不发送任何其他数据,而是通过 Ajax 发送,我会完全不同:

创建一个全局记录对象(作为关联数组):

var records = {};

您只需在点击发生时将值添加到此对象:

$('.add_recordings').click(function () {
    if (($('#recordings_name').val() != '') && ($('#recordings_value').val() != '')) {
            records[$('#recordings_name').val()] = $('#recordings_value').val();
    }
});

然后你发送它,例如ajax():

$.ajax({
   type: "POST",
   url: "some.php",
   data: records,
   success: function(msg){
     /...
   }
});

records 将被转换为类似

的查询字符串
recordnameA=recordvalue&recordnameB=recordvalue

并且在 PHP 站点上,您已经将所有这些值保存在一个数组中:

$_POST['recordnameA']

当然,如果你通过POST发送其他数据也可以,你可以在使用unset($_POST['otherdata'])处理后从数组中删除这些数据。


注意:在客户端构建 PHP 数组字符串只会令人困惑,您必须对其进行评估,例如与eval()。但是你不能确保你得到的字符串只包含一个数组,用户可能已经操纵了它并且你有一个潜在的安全漏洞。

【讨论】:

    猜你喜欢
    • 2013-07-26
    • 2019-09-13
    • 2018-12-20
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2015-12-10
    相关资源
    最近更新 更多