JSON格式的数据怎么在Ajax与php中进行传输
JSON格式的数据在Ajax与php之间的传输主要涉及两个方面:发送与接收。本文分别从发送与接收两个方面进行说明。
一、发送JSON数据
从前端通过Ajax向后端发送JSON格式的数据时,需要将JavaScript对象或数组格式的数据转化为JSON格式的字符串。这可以通过使用JSON.stringify()方法实现。
1. JSON.stringify()方法
JSON.stringify()方法接受三个参数,分别为要被转换成JSON格式的JavaScript值、转换的操作选项,以及缩进的空格数。
a. 如果要转换的JavaScript对象包含非JSON格式的属性(如函数或undefined等),则调用JSON.stringify()方法时,不会将这些属性包含在JSON字符串中,而是将这些属性边化为null或undefined(取决于第二个参数的值)。例如:
var myObj = {
name: "Tom",
age: 20,
sex: undefined,
sayHi: function() { alert('Hi!'); }
};
var jsonString = JSON.stringify(myObj);
// jsonString的值为'{"name":"Tom", "age":20}',sex属性和函数属性被省略了。
b. 转换操作选项可以是一个回调函数,用于定制化JSON字符串生成过程中的一些具体细节。例如:
var jsonString = JSON.stringify(myObj, function(key, value) {
if (typeof value === 'function') {
return "function()";
}
return value;
});
// jsonString的值为'{"name":"Tom", "age":20, "sex":null, "sayHi":"function()"}'。
c. 缩进的空格数可以用于生成可读性更好的JSON字符串。例如:
var jsonString = JSON.stringify(myObj, null, 2);
上述代码将生成如下的JSON字符串:
{
"name": "Tom",
"age": 20,
"sex": null,
"sayHi": "function()"
}
2. Ajax发送JSON数据
在使用Ajax发送JSON格式的数据时,需要使用POST方法,并将请求头的Content-Type设置为application/json。例如:
var myData = {
name: "Tom",
age: 20
};
$.ajax({
url: "/myController/myAction",
method: "POST",
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify(myData),
success: function(result) {
alert(result);
}
});
在上述代码中,data属性传递的是JSON格式的字符串,headers属性用于设置请求头的Content-Type,以便后端能正常解析数据。
二、接收JSON数据
从后端通过Ajax接收JSON格式的数据时,需要将JSON格式的字符串转化为JavaScript对象或数组。这可以通过使用JSON.parse()方法实现。
1. JSON.parse()方法
JSON.parse()方法接受一个参数,即要解析的JSON格式的字符串。该方法返回解析后的JavaScript值(对象或数组)。
例如:
var jsonString = '{"name":"Tom", "age":20}';
var myObj = JSON.parse(jsonString);
// myObj为{ name: 'Tom', age: 20 }
2. Ajax接收JSON数据
在Ajax接收JSON格式的数据时,需要设置请求头的Accept值为application/json,并将dataType属性设置为json。例如:
$.ajax({
url: "/myController/myAction",
method: "POST",
dataType: "json",
headers: {
"Accept": "application/json"
},
success: function(result) {
alert(result.name);
}
});
在上述代码中,dataType属性设置为json,表示Ajax请求结果的预期类型为JSON格式的数据,headers属性设置请求头的Accept值为application/json,以便后端返回JSON格式的数据。成功回调函数中的result参数即为JSON解析后的对象或数组。
