导读:本期聚焦于小伙伴创作的《php怎么返回json数据给vue?vue前端如何接收php返回的json数据?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《php怎么返回json数据给vue?vue前端如何接收php返回的json数据?》有用,将其分享出去将是对创作者最好的鼓励。

在前后端分离的开发模式下,php作为后端服务负责处理业务逻辑和数据库操作,vue作为前端框架负责页面渲染和用户交互,两者通常通过json格式进行数据传递。要实现php返回json数据给vue,需要从后端输出和前端接收两个环节分别处理。

php怎么返回json数据给vue?vue前端如何接收php返回的json数据?

php端返回json数据的实现

php返回json数据需要注意两个核心点:设置正确的响应头、将数据转换为合法的json格式。如果响应头设置错误,前端可能无法正确解析返回的内容。

基础返回示例

以下是一个简单的php接口示例,返回包含用户信息的json数据:

<?php
// 设置响应头为json格式,字符集为utf-8
header('Content-Type: application/json; charset=utf-8');

// 准备要返回的数据数组
$response = [
    'code' => 200,
    'msg' => '请求成功',
    'data' => [
        'id' => 1,
        'username' => 'test_user',
        'email' => 'user@ipipp.com'
    ]
];

// 将数据转换为json格式并输出
echo json_encode($response, JSON_UNESCAPED_UNICODE);
?>

这里需要注意json_encode函数的第二个参数JSON_UNESCAPED_UNICODE,如果不添加这个参数,中文会被转义为unicode编码,前端拿到后还需要额外处理。另外如果php文件中有其他输出(比如空格、换行、echo其他内容),会导致json格式错误,前端解析失败。

处理复杂数据场景

如果返回的数据中包含从数据库查询得到的结果集,需要先转换为数组再编码:

<?php
header('Content-Type: application/json; charset=utf-8');

// 模拟数据库查询结果
$dbResult = [
    ['id' => 1, 'name' => '商品A', 'price' => 99.9],
    ['id' => 2, 'name' => '商品B', 'price' => 199.9]
];

$response = [
    'code' => 200,
    'msg' => '查询成功',
    'data' => $dbResult
];

echo json_encode($response, JSON_UNESCAPED_UNICODE);
?>

vue前端接收php返回的json数据

vue前端通常使用axios库发送请求接收后端返回的json数据,axios会自动将json格式的响应内容转换为js对象,不需要手动解析。

安装并引入axios

如果项目是通过vue-cli创建的,可以先安装axios依赖:

npm install axios --save

在需要发送请求的vue组件中引入axios:

import axios from 'axios';

发送请求并处理返回数据

以下是一个vue组件的完整示例,调用php接口并接收返回的json数据:

<template>
  <div class="user-info">
    <p v-if="loading">数据加载中...</p>
    <div v-if="userData">
      <p>用户ID:{{ userData.id }}</p>
      <p>用户名:{{ userData.username }}</p>
      <p>邮箱:{{ userData.email }}</p>
    </div>
    <p v-if="errorMsg" style="color: red">{{ errorMsg }}</p>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      loading: false,
      userData: null,
      errorMsg: ''
    };
  },
  mounted() {
    this.getUserData();
  },
  methods: {
    getUserData() {
      this.loading = true;
      // 调用php接口地址,这里使用本地服务示例
      axios.get('http://127.0.0.1/api/user.php')
        .then(response => {
          // axios会自动将json响应转换为js对象,response.data就是php返回的数据
          if (response.data.code === 200) {
            this.userData = response.data.data;
          } else {
            this.errorMsg = response.data.msg;
          }
        })
        .catch(error => {
          this.errorMsg = '请求失败,请稍后重试';
          console.error('请求错误:', error);
        })
        .finally(() => {
          this.loading = false;
        });
    }
  }
};
</script>

常见问题及注意事项

  • php端不要输出任何额外内容,包括文件开头的BOM头、空格、换行,这些都会导致json格式错误
  • 如果php接口需要接收前端传递的参数,可以通过$_GET或者$_POST获取,注意参数过滤避免安全问题
  • vue端如果请求跨域,需要在php端设置跨域响应头,示例代码如下:
<?php
// 允许所有来源访问,实际开发中可以替换为指定的前端域名
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
// 处理OPTIONS预检请求
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    exit;
}
// 后续正常的接口逻辑
?>

另外如果前端使用post方式请求,php端获取参数时需要注意,axios默认的post请求数据是json格式,不是传统的表单格式,php的$_POST无法直接获取,需要手动读取输入流:

<?php
header('Content-Type: application/json; charset=utf-8');
// 读取前端post过来的json数据
$input = file_get_contents('php://input');
$postData = json_decode($input, true);

// 使用$postData中的参数进行后续处理
?>

phpjsonVueaxios修改时间:2026-07-10 22:57:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。