我正在尝试将 JSON 对象从 Javascript/Jquery 发送到 PHP,但我在控制台中收到错误消息。我究竟做错了什么。我是 JS 和 PHP 的新手。
JQuery 文件:
$(document).ready(function() {
var flickr = {'action': 'Flickr', 'get':'getPublicPhotos'};
// console.log(typeof(flickr));
var makeFlickrCall = function(flickrObj){
$.ajax({
url: '../phpincl/apiConnect.php',
type: 'POST',
data: flickrObj
})
.done(function(data) {
console.log("success");
console.log(JSON.stringify(data));
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
};
makeFlickrCall(flickr);
});
PHP 文件
<?php
$obj = $_POST['data'];
// print_r($obj);
return $obj;
?>
最佳答案
标准的 jQuery .ajax()
方法使用 data
属性创建一个 x-www-form-urlencoded 字符串传入请求体。像这样
action=Flickr&get=getPublicPhotos
因此,您的 PHP 脚本不应查找 $_POST['data']
,而应查找 $_POST['action']
和 $_POST[ '得到']
。
如果您想将原始 JSON 数据有效负载发送到 PHP,请执行以下操作...
将 AJAX contentType
参数设置为 application/json
并发送一个 stringified 版本的 JSON 对象作为 data
有效载荷,例如
$.ajax({
url: '../phpincl/apiConnect.php',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(flickrObj),
dataType: 'json'
})
然后您的 PHP 脚本将从 php://input
流中读取数据负载,例如
$json = file_get_contents('php://input');
然后您可以将其解析为 PHP 对象或数组...
$dataObject = json_decode($json);
$dataArray = json_decode($json, true);
而且,如果您只是想将其回显给客户端......
header('Content-type: application/json');
// unmodified
echo $json;
// or if you've made changes to say $dataArray
echo json_encode($dataArray);
关于javascript - 将 json 对象从 javascript 发送到 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750661/