我试图使用jQuery post方法发布一组数组,但是我无法获得数组的值。如何获取我发送的数组的值? 如果有人可以帮助我,我会很感激....
这就是我所做的:
$(document).ready( function()
{
$("#submit_info").click (
function()
{
var batchArr= new Array();
batchArr=arrPush('batch');
var facultyArr= new Array();
facultyArr=arrPush('faculty');
var levelArr= new Array();
levelArr=arrPush('level');
var sectionArr= new Array();
sectionArr=arrPush('section');
var shiftArr= new Array();
shiftArr=arrPush('shift');
$.post("server_side/college_info_insert.php",{
batchArr:batchArr,
facultyArr:facultyArr,
levelArr:levelArr,
sectionArr:sectionArr,
shiftArr:shiftArr
}, function(data)
{
alert(data);
});
}
);
function arrPush(opt)
{
var Arr= new Array();
Arr.push($("#"+opt+"_1").val());
var count= $("#"+opt).val();
var i=0;
for(i;i<=count;i++)
{
if(i==0)
{
Arr.push($("#txt"+opt).val());
}
else
{
Arr.push($("#txt"+opt+i).val());
}
}
return Arr;
}
}
);
如何在下一页“college_info_insert.php”中获取数组值?
答案 0 :(得分:1)
问题是PHP不知道如何从POST请求中读取多个值 - 通常这样的事情需要PHP作者使用括号,如:varname[]
。
所以,基本上你必须将变量作为字符串发送。使用JSON,您甚至可以使用单个变量名称将复杂对象作为字符串发送到PHP。通常你会使用JSON.stringify或类似的东西 - 但如果你有一个简单的数组,你可能甚至不需要它。
以下是使用jquery和$ .post找到的问题/解决方案的完整示例:
假设你有一个文件 myurl.php :
<?php
print_r($_POST);
?>
在单独的文件(或控制台)中,您可以尝试:
var myarray = Array('some','elements','etc');
var mydata = {postvar1: 'string', postvar2: myarray};
$.post('myurl.php', mydata, function(response) {
alert("response: " + response);
});
这不起作用!结果是postvar2只包含“etc”。
解决方案是将数组强制转换为可以从PHP解码的JSON字符串。
var myarray = Array('some','elements','etc');
var json_array = $.map(myarray,function(n) {
return '"'+n+'"';
});
var mydata = {postvar1: 'string', postvar2: '['+json_array+']' };
$.post('myurl.php', mydata, function(response) {
alert("response: " + response);
});
在PHP方面,您现在必须使用:json_decode($_POST['myarray']);
将结果放入正确的数组中。
请注意,此示例假定数组中的字符串或数字非常简单。如果您有复杂的对象,则需要使用JSON.stringify函数来处理额外的引号,转义特殊字符等。
答案 1 :(得分:0)
不确定我是否理解了这个问题但不会像这样的工作
if (isset($_POST['batchArr'])) {
$batchArr = $_POST['batchArr'];
// Then populate your html here e.g
echo $batchArr[0];
}