将JSON数据从Javascript发送到PHP?

如何将JSON数据从浏览器中的Javascript发送到服务器,然后让PHP在其中解析?

10个解决方案

56 votes

我在这里获得了很多信息,所以我想发布我发现的解决方案。

问题:从浏览器上的Javascript获取JSON数据到服务器,然后让PHP成功解析它。

环境:Windows上的浏览器(Firefox)中的Javascript。 LAMP服务器作为远程服务器:Ubuntu上的PHP 5.3.2。

什么有效(版本1):

1)JSON只是文本。 以某种格式的文本,但只是一个文本字符串。

2)在Javascript中,$_POST['json_string']给了我JSON字符串。

3)我使用Javascript中的AJAX XMLHttpRequest对象将数据发送到服务器:

request= new XMLHttpRequest()

request.open("POST", "JSON_Handler.php", true)

request.setRequestHeader("Content-type", "application/json")

request.send(str_json)

[... code to display response ...]

4)在服务器上,PHP代码读取JSON字符串:

$str_json = file_get_contents('php://input');

这将读取原始POST数据。 现在,$_POST['json_string']包含来自浏览器的确切JSON字符串。

什么有效(版本2):

1)如果我想使用$_POST['json_string']请求标头,则需要创建"x=y&a=b[etc]"的标准POST字符串,以便在PHP获取它时,可以将其放入$_POST关联数组中。 因此,在浏览器中的Javascript中:

var str_json = "json_string=" + (JSON.stringify(myObject))

当我像上述版本1中一样通过AJAX / XMLHttpRequest发送str_json时,PHP现在将能够填充$ _POST数组。

显示$_POST['json_string']的内容将显示JSON字符串。 将$ _POST数组元素上的json_decode()与json字符串一起使用将正确解码该数据并将其放入数组/对象中。

我遇到的陷阱:

最初,我尝试发送带有application / x-www-form-urlencoded标题的JSON字符串,然后尝试立即从PHP的$ _POST数组中读取它。 $ _POST数组始终为空。 那是因为它期望格式为yval = xval&[rinse_and_repeat]的数据。 它没有找到这样的数据,只有JSON字符串,并且只是将其丢弃了。 我检查了请求标头,然后正确发送了POST数据。

同样,如果我使用application / json标头,则无法再次通过$ _POST数组访问发送的数据。 如果要使用application / json内容类型标头,则必须通过[php:// input,]而不是$ _POST访问PHP中的原始POST数据。

参考文献:

1)如何在PHP中访问POST数据:如何在PHP中访问POST数据?

2)有关application / json类型的详细信息,其中包含一些示例对象,这些示例对象可以转换为JSON字符串并发送到服务器:[http://www.ietf.org/rfc/rfc4627.txt]

kermit answered 2020-07-09T13:51:25Z

16 votes

使用jQuery的JavaScript文件(更干净,但库开销更大):

$.ajax({

type: 'POST',

url: 'process.php',

data: {json: JSON.stringify(json_data)},

dataType: 'json'

});

PHP文件(process.php):

directions = json_decode($_POST['json']);

var_dump(directions);

请注意,如果您在JavaScript中使用回调函数:

$.ajax({

type: 'POST',

url: 'process.php',

data: {json: JSON.stringify(json_data)},

dataType: 'json'

})

.done( function( data ) {

console.log('done');

console.log(data);

})

.fail( function( data ) {

console.log('fail');

console.log(data);

});

您必须在PHP文件中返回JSON对象(以javascript格式),以便在Javascript代码中获得“完成/成功”结果。 最低退货/打印:

print('{}');

请参阅Ajax请求返回200 OK,但会引发错误事件而不是成功

尽管对于更严重的问题,您应该使用适当的响应代码显式发送回适当的标头。

Cyrille answered 2020-07-09T13:52:08Z

6 votes

使用AJAX的HTML输入字段(发送到服务器JSON,用PHP解析JSON并发送回客户端)的JavaScript上的简单示例:

Last Name

placeholder="Last name"/>

Age

placeholder="Age"/>

Show

var xmlhttp;

function actionSend() {

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp = new XMLHttpRequest();

}

else {// code for IE6, IE5

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

var values = $("input").map(function () {

return $(this).val();

}).get();

var myJsonString = JSON.stringify(values);

xmlhttp.onreadystatechange = respond;

xmlhttp.open("POST", "ajax-test.php", true);

xmlhttp.send(myJsonString);

}

function respond() {

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

document.getElementById('result').innerHTML = xmlhttp.responseText;

}

}

PHP文件ajax-test.php:

$str_json = file_get_contents('php://input'); //($_POST doesn't work here)

$response = json_decode($str_json, true); // decoding received JSON to array

$lName = $response[0];

$age = $response[1];

echo '

Received data:
First Name Age
'.$lName.' '.$age.'

';

?>

Aconic answered 2020-07-09T13:52:33Z

4 votes

PHP具有称为json_decode()的内置函数。 只需将JSON字符串传递到此函数中,它将把它转换为等效的PHP字符串,数组或对象。

为了将其作为字符串从Javascript传递,您可以使用将其转换为JSON

JSON.stringify(object);

或诸如Prototype之类的库

John answered 2020-07-09T13:53:02Z

4 votes

有3种相关方式可以将数据从客户端(HTML,Javascript,Vbscript等)发送到服务器端(PHP,ASP,JSP等)

1. HTML form Posting Request (GET or POST).

2. AJAX (This also comes under GET and POST)

3. Cookie

HTML表单发布请求(GET或POST)

这是最常用的方法,我们可以通过此方法发送更多数据

AJAX

这是异步方法,必须以安全的方式工作,在这里我们还可以发送更多数据。

曲奇饼

这是使用少量不敏感数据的好方法。 这是处理少量数据的最佳方法。

您可以选择HTML表单发布或AJAX。 但是在发送到服务器之前,请先验证您的json或使用[http://jsonlint.com/]之类的链接

如果您有Json Object,则使用JSON.stringify(object)将其转换为String;如果您有JSON字符串,则按原样发送它。

Robin Michael Poothurai answered 2020-07-09T13:53:57Z

2 votes

使用JSON.stringify(yourObj)或Object.toJSON(yourObj),最后一个用于使用prototype.js,然后使用所需的任何内容(ajax或提交)将其发送,并根据建议使用json_decode([http:// www (.php.net / manual / en / function.json-decode.php])解析为php。 然后您可以将其用作数组。

khael answered 2020-07-09T13:54:17Z

2 votes

我建议使用jquery.post()方法。

ravi404 answered 2020-07-09T13:54:37Z

1 votes

var myJSONObject = {"bindings": 11};

alert(myJSONObject);

var stringJson =JSON.stringify(myJSONObject);

alert(stringJson);

jianfeng answered 2020-07-09T13:54:53Z

0 votes

您可以轻松地将对象转换为urlencoded字符串:

function objToUrlEncode(obj, keys) {

let str = "";

keys = keys || [];

for (let key in obj) {

keys.push(key);

if (typeof (obj[key]) === 'object') {

str += objToUrlEncode(obj[key], keys);

} else {

for (let i in keys) {

if (i == 0) str += keys[0];

else str += `[${keys[i]}]`

}

str += `=${obj[key]}&`;

keys.pop();

}

}

return str;

}

console.log(objToUrlEncode({ key: 'value', obj: { obj_key: 'obj_value' } }));

// key=value&obj[obj_key]=obj_value&

Юрий Столов answered 2020-07-09T13:55:13Z

-2 votes

我找到了简单的方法,但我知道这并不完美

1.将json分配给

如果您的JSON是

var data = [

{key:1,n: "Eve"}

,{key:2,n:"Mom"}

];

在--- main.php中

var data = [

{key:1,n: "Eve"}

,{key:2,n:"Mom"} ];

function setInput(data){

var input = document.getElementById('data');

input.value = JSON.stringify(data);

var submit =document.getElementById('submit');

//to submit and goto second page

submit.click();

}

//call function

setInput(data);

在------ second.php -----

printJson();

function printJson(){

var data = getUrlVars()["data"];

//decode uri to normal character

data = decodeURI(data);

//for special character , / ? : @ & = + $ #

data = decodeURIComponent(data);

//remove " ' " at first and last in string before parse string to JSON

data = data.slice(1,-1);

data = JSON.parse(data);

alert(JSON.stringify(data));

}

//read get variable form url

//credit http://papermashup.com/read-url-get-variables-withjavascript/

function getUrlVars() {

var vars = {};

var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {

vars[key] = value;

});

return vars;

}

OatMs answered 2020-07-09T13:55:51Z

js值发送给php,将JSON数据从Javascript发送到PHP?相关推荐

  1. Nodejs发送邮箱,nodejs怎样发送给163邮箱,nodemailer模块,发送邮箱错误代码535

    前提需先安装 nodemailer 模块,执行下面的命令 npm install nodemailer -s 首先我有一个配置文件 conf.js module.exports = {url:'mon ...

  2. JSON数据与JavaScript对象转换

    使用JSON时,最基本的工作就是JSON数据与JavaScript对象之间的互相转换.如浏览器 从服务器端获得JSON数据,然后转换为JavaScript对象在网页输出. SON: JavaScrip ...

  3. js:使用angular的http获取json数据

    一,本例中使用amaze的select框架,配合angular显示json数据 框架官网链接:http://amazeui.org/javascript/selected 由于页面的异步刷新导致sel ...

  4. 通过js定义数组往里面添加json数据

    项目中使用到开始月份与结束月份,为了适应结束月份必须大于等于开始月份,使用动态赋值的方式,当选择开始月份的时候,动态添加结束月份,于是在最外层定义一个数组,动态的往里面添加数据进行赋值,我使用的是vu ...

  5. 十分钟,学会使用js三种方法创建本地json数据文件

    前言 在干业务时,需要得到一份全国省市到街道的区划数据,刚好业务中连接了高德地图,高德地图又提供了区划的api,这下只需要把数据写到json里了.什么!你说你还不会用js创建json文件?没关系,只需 ...

  6. c json保存整型数组,您如何存储“ int”? NSMutableArray *或NSMutableDictionary *中的值?整数形式的JSON数据的长期问题。...

    How do you store "int" values in an NSMutableArray or NSMutableDictionary? Chronic problem ...

  7. 【笔记】 node.js - 开启本地服务器,返回json数据

    const express = require('express') const app = express()app.use((request,response,next)=>{console ...

  8. JSON 数据转换为 JavaScript 对象

    一.介绍 JSON 语法规则 数据为 键/值 对. 数据由逗号分隔. 大括号保存对象 方括号保存数组 二.JSON 字符串转换为 JS(JSON)对象 方法一:JavaScript 内置函数 JSON ...

  9. js html 处理json数据,js 解析JSON数据

    链接原文转自:http://www.w3cschool.cn/json/xumd1piw.html http://www.cnblogs.com/zoumiaomiao/p/4909539.html ...

最新文章

  1. 成都有哪些牛逼的互联网公司?
  2. this.Index = this._count - 1
  3. Javascript操纵Cookie--转
  4. Android --- android中Invalidate和postInvalidate的区别
  5. python3精要(50)-二分法解一元方程
  6. vant 动态 粘性布局_CSS Viewport 单位,很多人还不知道使用它来快速布局!
  7. 搜索不包含关键词_亚马逊listing关键词优化
  8. 按120分计算成绩 mysql_Mysql实用教程试卷B.doc
  9. mysql 传送时间_vue处理mysql数据库中的时间数据(datetime)
  10. python matplotlib 画一条水平直线遇到的问题
  11. 三层交换机配置DHCP的解决方案
  12. Sublime Text3 注册码激活码
  13. [蓝桥杯]基础练习 十六进制转八进制
  14. c#连接mysql数据库,增删查改命令执行
  15. 学生综合素质评价系统c语言,学生综合素质评价表自我评价范文(2)
  16. 因违反《竞业协议》,三年白忙活了!赔偿 97.6 万元,返还 15.8 万元
  17. 从零开始写项目【总结】
  18. 改变世界的五位程序员
  19. 小白也能轻松看懂的lora物联网!
  20. 神经系统结构基础是什么,神经系统结构图简笔画

热门文章

  1. LibreOJ#6030. 「雅礼集训 2017 Day1」矩阵
  2. 不越狱 继续逆向 微信运动
  3. STM32F0xx_FLASH编程(片内)配置详细过程
  4. Ibatis SqlMapclient对象
  5. 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例-转...
  6. const的修饰规则
  7. JAVA对map进行分组
  8. 基于AWS的云备份容灾解决方案
  9. 戴尔携手EMC战略合作续签至2013年
  10. MongoDB学习笔记(四)--索引 性能优化