You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向服务器URL发送JSON文件无报错,但目标URL内容为空的问题

解决POST发送JSON后目标URL内容为空的问题

嘿,我明白你的困扰——代码跑起来没报错,但访问那个JSON文件时还是空的,这确实让人摸不着头脑。咱们一步步拆解问题,找到解决方案:

核心问题:静态文件服务器不支持写入操作

你当前请求的URL是一个静态JSON文件(https://netfish.xyz/wp-content/uploads/2018/05/archivo.json),但普通的静态文件托管服务(比如WordPress用来存上传文件的服务器)只负责读取文件并返回内容,根本没有处理POST请求来修改文件的逻辑。你发过去的JSON数据服务器根本没地方存,自然文件内容还是空的。

具体排查&修复步骤

1. 给后端加个处理写入的接口

要实现把数据写入JSON文件,你需要一个后端脚本(比如PHP,毕竟WordPress本身用PHP)来接收POST过来的JSON,然后把它写到目标文件里。给你写个简单的PHP示例:

<?php
// 允许跨域(如果你的前端和后端不在同一域名下)
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json");

// 读取POST过来的JSON数据
$json_data = file_get_contents('php://input');
if (!$json_data) {
    echo json_encode(['status' => 'error', 'message' => '没接收到任何数据']);
    exit;
}

// 目标文件的服务器路径(根据你的实际路径调整)
$file_path = $_SERVER['DOCUMENT_ROOT'] . '/wp-content/uploads/2018/05/archivo.json';

// 写入文件
if (file_put_contents($file_path, $json_data)) {
    echo json_encode(['status' => 'success', 'message' => '数据写入成功']);
} else {
    echo json_encode(['status' => 'error', 'message' => '写入文件失败,检查权限']);
}
?>

把这个文件存到你的WordPress服务器上(比如命名为write-json.php),然后把前端代码里的请求URL换成这个PHP文件的地址。

2. 完善前端代码的容错逻辑

你的前端代码现在只处理了请求成功的情况,万一服务器报错或者params本身是空的,你根本看不到问题。调整一下:

// 先确认params有实际内容
if (!params || Object.keys(params).length === 0) {
    console.error('哎呀,params是空的或者没定义!');
    return;
}

$('#form-output code').html(JSON.stringify(params, undefined, 4)); 
var xhr = new XMLHttpRequest(); 
// 替换成你的后端接口URL
var url = "https://netfish.xyz/write-json.php"; 
xhr.open("POST", url, true); 
xhr.setRequestHeader("Content-Type", "application/json"); 

xhr.onreadystatechange = function () { 
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            var json = JSON.parse(xhr.responseText);
            console.log('服务器响应:', json);
            if (json.status === 'success') {
                console.log('数据保存成功啦!');
            } else {
                console.error('服务器出错:', json.message);
            }
        } else {
            console.error('请求失败,状态码:', xhr.status);
        }
    }
}; 

var data = JSON.stringify(params, undefined, 4); 
console.log('要发送的数据:', data); 
xhr.send(data); 

3. 检查服务器文件权限

别忘了确认archivo.json文件和它所在的目录有服务器用户的写入权限(通常是www-data或者apache用户),不然后端脚本就算逻辑对了,也写不了文件。

额外提醒

如果是在WordPress环境下,更规范的做法是写一个自定义REST API端点,而不是直接用PHP操作文件,这样更安全,也符合WordPress的开发规范。另外,直接暴露写入接口有安全风险,最好加个身份验证(比如API密钥或者用户登录校验),防止别人乱改你的文件。

内容的提问来源于stack exchange,提问作者Jon Velasco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:04:20