我试图将
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; ?>
解决方法
由于OP标题的说法,Phil的优秀答案
send json object from javascript (not jQuery ) to php
这是如何使用(香草)javascript,以防它有助于寻找这种方法的人:
var jsondata; var flickr = {'action': 'Flickr','get':'getPublicPhotos'}; var data = JSON.stringify(flickr); var xhr = new XMLHttpRequest(); xhr.open("POST","../phpincl/apiConnect.php",!0); xhr.setRequestHeader("Content-Type","application/json;charset=UTF-8"); xhr.send(data); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { // in case we reply back from server jsondata = JSON.parse(xhr.responseText); console.log(jsondata); } }
请注意,我们仍然需要使用JSON.parse()将服务器的响应转换为javascript对象
现在,在服务器端(基于Phil的回答)如果您要向客户端发送回复,您可以:
header('Content-type: application/json'); $json = file_get_contents('php://input'); $json_decode = json_decode($json,true); $json_encode = json_encode($json_decode); echo $json_encode;
注意:
首先解码然后编码回原始json输入的原因是正确地逃避数据中(可能的)URL中的斜杠,例如,
json_encode将转换此URL
http://example.com
成
http:\/\/example.com
……在OP中不是这种情况,但在其他一些场景中很有用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。