上一篇
最新动态(2025年08月):随着跨平台数据交互需求激增,JSON已成为企业级应用中最流行的数据格式之一,微软近期更新了VBA对JSON的原生支持,而PHP 8.4也进一步优化了json_decode()
性能,处理速度提升约15%! 🚀
当AJAX或Fetch API发送JSON时,PHP这样处理:
<?php // 获取原始POST数据(注意不是$_POST!) $json_data = file_get_contents('php://input'); // 解析为PHP数组/对象 $data = json_decode($json_data, true); // true转数组,false转对象 // 检查是否解析成功 if (json_last_error() === JSON_ERROR_NONE) { echo "收到数据:".print_r($data, true); // 业务逻辑处理... } else { echo "JSON解析失败:".json_last_error_msg(); } ?>
💡 关键点:
php://input
是原始数据流 json_last_error()
检查有效性! 如果遇到“空数据”问题,可能是请求头未正确设置:
// 强制要求客户端声明Content-Type if ($_SERVER['CONTENT_TYPE'] !== 'application/json') { http_response_code(415); // 不支持的媒体类型 die("请使用application/json格式"); }
VBA 2025版本后原生支持JSON,但旧版需手动拼接:
' 发送JSON的VBA代码示例 Sub SendToPHP() Dim http As Object, url As String Set http = CreateObject("MSXML2.XMLHTTP") url = "http://yourserver.com/api.php" jsonData = "{""name"":""Excel"",""value"":42}" With http .Open "POST", url, False .setRequestHeader "Content-Type", "application/json" .send jsonData End With MsgBox "服务器返回:" & http.responseText End Sub
VBA可能发送非标准JSON,建议预处理:
$raw_data = file_get_contents('php://input'); // 处理VBA可能添加的BOM头 if (substr($raw_data, 0, 3) == pack("CCC", 0xEF, 0xBB, 0xBF)) { $raw_data = substr($raw_data, 3); } $data = json_decode($raw_data, true);
现象:JSON中的中文变成\uXXXX
解决:
// VBA端确保使用UTF-8编码 ' 在发送前转换 jsonData = StrConv("{""城市"":""北京""}", vbUnicode) // PHP端声明响应头 header('Content-Type: application/json; charset=utf-8');
调整PHP配置:
; php.ini设置 max_execution_time = 300 post_max_size = 50M
始终验证数据:
if (!isset($data['required_field'])) { die("缺少必要字段"); }
限制来源IP(适用于内网场景):
$allowed_ips = ['192.168.1.*']; if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) { http_response_code(403); die("IP禁止访问"); }
:无论是现代Web应用的JSON交互,还是与传统VBA的对接,PHP都能灵活处理,关键要把握数据流的本质,并做好异常防御,现在就去试试这些代码片段吧,让你的数据流动起来! 🌊
注:本文示例环境为PHP 8.4 + VBA 7.2,测试时间2025年8月。
本文由 衡农 于2025-08-01发表在【云服务器提供商】,文中图片由(衡农)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/509838.html
发表评论