我想将数组从Jquery传递给PHP。
我的jquery:
var jsonFormat = JSON.stringify(myArray);
$.post("myPHPFile.php", jsonFormat).done(function(data) {
$('.foo').append(data);
});
我按预期在浏览器控制台中看到myArray
我的PHP:
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS');
//echo json_decode(array('success' => 'yes'));
if ($_SERVER['REQUEST_METHOD']=="POST"){
$jsonFormat = $_POST['jsonFormat'];
echo $jsonFormat;
}
?>
在浏览器控制台中,我获得状态200 ok,但没有响应。我期待看到数组作为回应。
答案 0 :(得分:2)
您已向PHP传递了一个带有JSON正文的请求,但您尝试将其视为application/x-www-form-urlencoded
数据,而不是application/json
数据。
改为使用$.post("myPHPFile.php", { myData: myArray })
和$_POST['myData']
。 jQuery会将数据编码为application/x-www-form-urlencoded
然后(它甚至会默认使用PHP的不寻常的命名约定)。
答案 1 :(得分:0)
我会做类似的事情:
Jquery的
$.post("myPHPFile.php", myArray.serialize(), function(data) {
$(".foo").append(data);
}, "json");
myArray.serialize()将您的数组转换为一个字符串,该字符串将发布到您的PHP文件中:var1=text&var2=text
PHP
<?php
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
// repeat for each variable being posted.
// your php code that does whatever it will do with the variables.
// data to return to Jquery will be put back into an array like this:
$return['var3'] = $var3;
$return['var4'] = $var4;
echo json_encode($return);
unset($_POST);
?>
返回的数据是datatype = json,可以在Jquery代码中访问,如下所示:data.var3 data.var4