[英]Passing JavaScript array to PHP through jQuery $.ajax
我想在PHP中操作JavaScript数组。 可以这样做吗?
$.ajax({
type: "POST",
url: "tourFinderFunctions.php",
data: "activitiesArray="+activities,
success: function() {
$("#lengthQuestion").fadeOut('slow');
}
});
活动是一个单维数组,如:
var activities = ['Location Zero', 'Location One', 'Location Two'];
我尝试这个时脚本没有完成...我该如何解决?
data: { activitiesArray: activities },
而已! 现在您可以在PHP中访问它:
<?php $myArray = $_REQUEST['activitiesArray']; ?>
您需要在发送之前将数组编码为JSON,否则您只会在另一端获得一些垃圾。
由于你发送的只是数组,你可以这样做:
data: { activities: activities }
这将自动为您转换数组。
详情请见此处 。
你需要把它变成一个字符串。 您可以使用JSON2库中的stringify方法执行此操作。
代码看起来像:
var myJSONText = JSON.stringify(myObject);
所以
['Location Zero', 'Location One', 'Location Two'];
会变成:
"['Location Zero', 'Location One', 'Location Two']"
您将不得不向PHP大师询问如何在服务器上处理此问题。 我认为其他答案在这里是一个解决方案。
可以以类似的方式从服务器返回数据。 即你可以把它变回一个物体。
var myObject = JSON.parse(myJSONString);
我知道回答这个问题可能为时已晚,但这对我很有帮助:
用var st = JSON.stringify(your_object);
将你的javascript对象(json)字符串化var st = JSON.stringify(your_object);
将您的POST数据作为“字符串”传递(可能使用jQuery: $.post('foo.php',{data:st},function(data){... });
$data = json_decode($_POST['data']);
就是这样......你可以自由地使用你的数据。
多维数组和单个数组作为普通数组处理。 要访问它们,只需执行正常的$foo[4]
。
关联数组(javsacript对象)作为php对象(类)处理。 要访问它们就像类: $foo->bar
。
我应该是这样的:
$.post(submitAddress, { 'yourArrayName' : javaScriptArrayToSubmitToServer },
function(response, status, xhr) {
alert("POST returned: \n" + response + "\n\n");
})
这对我有用:
$.ajax({
url:"../messaging/delete.php",
type:"POST",
data:{messages:selected},
success:function(data){
if(data === "done"){
}
info($("#notification"), data);
},
beforeSend:function(){
info($("#notification"),"Deleting "+count+" messages");
},
error:function(jqXHR, textStatus, errorMessage){
error($("#notification"),errorMessage);
}
});
这适用于您的PHP :
$messages = $_POST['messages']
foreach($messages as $msg){
echo $msg;
}
使用JQuery Serialize函数
http://docs.jquery.com/Ajax/serialize
Serialize通常用于准备要发布到服务器的用户输入数据。 序列化数据采用标准格式, 几乎与所有服务器端编程语言和框架兼容 。
使用将数组操作数附加到所需变量名称的PHP内置功能。
如果我们将值添加到Javascript数组,如下所示:
acitivies.push('Location Zero');
acitivies.push('Location One');
acitivies.push('Location Two');
它可以按如下方式发送到服务器:
$.ajax({
type: 'POST',
url: 'tourFinderFunctions.php',
'activities[]': activities
success: function() {
$('#lengthQuestion').fadeOut('slow');
}
});
注意活动[]周围的引号。 这些值将如下:
$_POST['activities'][0] == 'Location Zero';
$_POST['activities'][1] == 'Location One';
$_POST['activities'][2] == 'Location Two';
这是因为PHP将您的值读取为字符串。 如果我不想将我的数据作为对象传递(就像之前的答案一样,这也很好),我只是在我的PHP中执行此操作:
$activitiesString = $_POST['activitiesArray'];
$activitiesArray = (explode(",",$activitiesString));
最后一行在每个逗号后将字符串拆分为多个位。 现在$ activitiesArray也是一个数组。 即使没有逗号(javascript数组中只有一个元素),它也能正常工作。
快乐的编码!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.