我有一个选择框,其中有一个项目列表,他为每个选定的选项输入值并保存。 我写了一个类似的函数。
$('.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的append函数不起作用,它是text类型的输入。
我想要做的是使用jquery构建一个php数组,以便它可以在$ _POST中传递..有没有更好的方法来做到这一点?
答案 0 :(得分:2)
recordings_array的追加功能不起作用,它的a 输入文字类型。
为什么不设置它的值而不是追加?
$('#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);
答案 1 :(得分:1)
如果您没有发送任何其他数据并通过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()
。但是你无法确保你获得的字符串只包含一个数组,用户可能已经操纵它并且你有一个潜在的安全漏洞。