0

我想将一个数组从 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,但没有响应。我期待将数组视为响应。

4

2 回答 2

2

您已向 PHP 传递了一个带有 JSON 正文的请求,但您试图将其视为application/x-www-form-urlencoded数据,而不是application/json数据。

使用$.post("myPHPFile.php", { myData: myArray })and$_POST['myData']代替。jQuery 将像application/x-www-form-urlencoded那时一样对数据进行编码(它甚至会默认使用 PHP 不寻常的命名约定)。

于 2013-07-28T08:10:01.873 回答
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

于 2013-07-28T09:44:52.600 回答