PHP json格式和js json格式 js跨域调用实现代码

下面是关于“PHP json格式和js json格式 js跨域调用实现代码”的攻略。

PHP与JSON格式

JSON格式介绍

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,主要用于前后端数据交互。JSON格式由键值对组成,数据之间用逗号分隔,键值对之间用冒号分隔。JSON格式支持数组和嵌套对象的格式,数据类型包括字符串、数字、布尔值、数组和对象。

以下是一个JSON格式的例子:

{
  "name": "张三",
  "age": 25,
  "hobby": ["篮球","游泳"],
  "address": {
    "province": "广东省",
    "city": "深圳市",
    "district": "南山区"
  }
}

PHP通过JSON格式传递数据

在PHP中,可以通过使用json_encode将数组转换成JSON格式数据,使用json_decode将JSON格式数据转换成数组。

例如,将PHP数组转换为JSON格式:

$data = array(
  "name" => "张三",
  "age" => 25
);

$json_data = json_encode($data);

将JSON格式数据转换为PHP数组:

$json_str = '{"name":"张三","age":25}';
$data = json_decode($json_str, true);

其中,json_decode函数的第二个参数为true时,表示将JSON数据转换为数组而不是对象。

JS与JSON格式

JSON格式介绍

同上。

JS通过JSON格式传递数据

在JS中,可以使用JSON对象的方法,将JS对象(数组也是一种对象)转换成JSON格式数据,也可以将JSON格式数据转换成JS对象。

例如,将JS对象转换为JSON格式:

var data = {
  name: "张三",
  age: 25
};

var json_data = JSON.stringify(data);

将JSON格式数据转换为JS对象:

var json_str = '{"name":"张三","age":25}';
var data = JSON.parse(json_str);

其中,JSON.parse方法将JSON格式数据转换为JS对象,JSON.stringify方法将JS对象转换为JSON格式数据。

JS跨域调用

同源限制

同源是指协议、主机名和端口号都相同的两个URL,同源限制是浏览器对JS发出跨域请求的安全限制策略。在非同源的情况下,浏览器会拒绝跨域请求。

JSONP跨域调用

为了解决JS跨域调用的问题,可以使用JSONP技术,JSONP(JSON with Padding)是一种非官方的跨域调用方式。它利用script标签的src属性不受同源限制的特性,将需要请求的数据通过JSON格式包装后,作为回调函数的参数动态插入到script标签的src属性中,然后通过回调函数处理返回的数据。

以下是一个JSONP的例子:

<script>
  function showData(data) {
    console.log(data);
  }
</script>

<script src="http://www.example.com/data.php?callback=showData"></script>

其中,data.php文件会返回一个将数据包装成JSON格式的JavaScript语句,并在最外层包裹一个回调函数调用,如下:

showData({"name":"张三","age":25});

CORS跨域调用

CORS(Cross-Origin Resource Sharing)跨域资源共享是W3C标准的一种跨域通信机制。它通过响应头中的Access-Control-Allow-Origin字段,来告知浏览器哪些网站可以访问资源,从而达到解决JS跨域的问题。

在服务端,需要设置响应头,例如PHP设置响应头的代码如下:

header('Access-Control-Allow-Origin: http://www.example.com');

在JS中,可以使用XMLHttpRequest对象访问跨域资源(需要浏览器支持CORS),代码如下:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.example.com/data.php', true);
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    console.log(xhr.responseText);
  }
};
xhr.send();

示例说明

示例1

PHP将数组转换为JSON格式,JS通过JSONP跨域调用获取数据。

PHP代码(data.php):

<?php
header('Content-type: application/javascript');
$data = array(
  "name" => "张三",
  "age" => 25
);
$json_data = json_encode($data);
echo $_GET['callback'] . '(' . $json_data . ')';
?>

JS代码:

<script>
  function showData(data) {
    console.log(data);
  }
</script>

<script src="http://www.example.com/data.php?callback=showData"></script>

在浏览器中运行JS代码,可以看到控制台输出:

Object {name: "张三", age: 25}

示例2

JS通过XMLHttpRequest对象访问跨域资源。

PHP代码(data.php):

<?php
header('Access-Control-Allow-Origin: http://www.example.com');
$data = array(
  "name" => "张三",
  "age" => 25
);
$json_data = json_encode($data);
echo $json_data;
?>

JS代码:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.example.com/data.php', true);
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    console.log(xhr.responseText);
  }
};
xhr.send();

在浏览器中运行JS代码,可以看到控制台输出:

{"name":"张三","age":25}

以上是关于“PHP json格式和js json格式 js跨域调用实现代码”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP json格式和js json格式 js跨域调用实现代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 判断js数据类型的函数实例详解

    判断js数据类型的函数实例详解 背景 在JavaScript中,数据类型多种多样,包括了数字、字符串、布尔值、数组、对象、函数等。而有些时候,需要用JavaScript代码来对不同的数据类型做不同的操作。因此,了解如何判断这些数据类型就显得非常重要了。本文将详细讲解如何通过函数来判断JavaScript中不同数据类型。 判断数据类型的函数 typeof函数 …

    JavaScript 2023年5月27日
    00
  • 一个即时表单验证的javascript代码

    下面就为您详细讲解如何编写一个即时表单验证的 JavaScript 代码。 编写 JavaScript 表单验证代码的基本步骤 获取表单的各个输入项,如输入框、单选框、多选框等,并对每个输入项都定义一个监听事件(如 onblur、onkeyup 等),监听输入内容的改变。 在监听事件中编写检验函数,该函数应当返回布尔值来表示输入项是否符合要求。可以根据不同的…

    JavaScript 2023年6月10日
    00
  • 浅谈JS中json数据的处理

    下面是“浅谈JS中json数据的处理”的完整攻略: 一、什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以易于读写且易于机器解析的形式传输数据。JSON采用键值对的形式组织数据,并使用逗号分隔不同的键值对。 二、JSON数据的表示方式 在JavaScript中使用JSON表示数据时,可以使用字面量表…

    JavaScript 2023年6月11日
    00
  • JavaScript动态创建div等元素实例讲解

    针对“JavaScript动态创建div等元素实例讲解”的完整攻略,我给出以下内容: 1. 动态创建元素 在 JavaScript 中,我们可以使用 document.createElement() 方法来动态创建元素。其语法格式如下: var element = document.createElement(tagName); 其中,tagName 表示要…

    JavaScript 2023年6月10日
    00
  • jquery遍历数组与筛选数组的方法

    下面是关于jQuery遍历和筛选数组的方法的详细讲解: 遍历数组 1. each方法 使用each方法遍历数组很简单,只需要将数组作为each方法的参数,然后在回调函数中操作即可。回调函数中可以接收两个参数:元素的索引和元素本身。以下是一个例子: var arr = [‘apple’, ‘banana’, ‘orange’]; $.each(arr, fun…

    JavaScript 2023年5月27日
    00
  • Ajax实现无刷新三联动下拉框

    介绍 本攻略将会详细介绍如何通过 Ajax 技术实现无刷新三联动下拉框。所谓三联动下拉框指的是三个下拉框之间存在父子关系,当父级下拉框的选项改变时,子级下拉框的选项会进行更新。 实现步骤 HTML 部分 首先,在 HTML 部分构建三个 select 标签,分别表示省市区县。 <select id="province"> &l…

    JavaScript 2023年6月10日
    00
  • js 实现文件上传样式详情

    引言 本篇攻略将为您详细讲解如何使用 JavaScript 实现文件上传样式,主要包括以下步骤: 样式设计 上传文件处理 实现上传进度条 处理上传状态 同时,为了让读者更好理解,我们将提供两条关于 JavaScript 实现文件上传样式的示例,希望能为您带来帮助。 样式设计 在实现样式前,我们需要先确定好样式。常见的文件上传样式一般都是基于 input 标签…

    JavaScript 2023年5月27日
    00
  • JS中URL.createObjectURL使用示例讲解

    JS中URL.createObjectURL使用示例讲解 什么是URL.createObjectURL? 在JavaScript中,URL.createObjectURL() 是一种方便的方法,可以将 Blob 或 文件对象转换为一个URL字符串,用于引用和使用。 URL.createObjectURL的语法 objectURL = URL.createOb…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部