javascript - 将 json 对象从 javascript 发送到 php

标签 javascript php jquery ajax json

我正在尝试将 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/

相关文章:

javascript - 如果不重新分配构造函数,我们如何在函数上使用 'new'

javascript - AngularJS 和基本 HTTP 身份验证

php - 如何检查代码点火器中的文件字段是否为空?

javascript - 在javascript或Jquery中,哪种对象具有.element属性

javascript - 根据内容为空隐藏DIV

javascript - 导入失败 - 未捕获的 ReferenceError : function is not defined

javascript - JavaScript 中的无限循环?

php - 如何在 Codeigniter 中将数据库函数调用到自定义库中?

php - 我如何从给定的日期时间结构创建碳对象?

jquery - 使用 jQuery 的图像滚动器