欢迎访问宙启技术站
智能推送

JSON格式的数据怎么在Ajax与php中进行传输

发布时间:2023-05-15 04:01:31

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解析后的对象或数组。