不使用Postman能否通过JavaScript或jQuery向JSON文件插入新对象?
问题解决方法
核心原因说明
首先明确两个前提:
- 浏览器端运行的JavaScript本身没有直接写入服务器磁盘文件的权限,你用Postman可以成功新增对象,说明你的服务器已经针对
json.json这个路径配置了对应的请求处理逻辑,能够接收参数后修改服务器上存储的json.json文件。 - 你现有代码最明显的错误是
url参数中带了多余的空格,首先要把空格删除。
最常见的失败原因
Postman不受浏览器跨域规则限制,如果你前端页面的部署域名和https://mysite.com不一致,浏览器会默认拦截你的AJAX请求,这是90%以上Postman能成、前端代码不成的原因,需要让服务器运维同学配置CORS跨域允许规则。
修正后的代码示例
你可以先使用下面的代码,同时对照Postman的请求配置调整参数:
$(document).ready(function() { $.ajax({ method: "POST", // 确认Postman用的是POST方法,不对就改成PUT url: "https://mysite.com/json.json", // 已删除多余空格 dataType: "json", contentType: "application/json", data: JSON.stringify({ Name: "John", latitude: "111", longitude: "222",status:"R" }), // 如果Postman配置了鉴权头、自定义头,在这里补充 // headers: { // "Authorization": "Bearer 你的鉴权token" // } }) .done(function( msg ) { alert( "操作成功: " + JSON.stringify(msg) ); }) .fail(function( jqXHR, textStatus, errorThrown ) { // 控制台打印完整错误信息,方便排查具体问题 console.error("请求失败详情:", jqXHR.responseText, textStatus, errorThrown); alert( "请求失败: " + textStatus ); }); });
其他排查点
如果修改后还是失败,可以对照Postman的配置逐一核对:
- 请求方法是否一致:部分服务端接口用PUT接收修改请求
- 请求头是否一致:有没有遗漏
Accept、鉴权类的请求头 - 请求体格式是否一致:确认你传的字段名、字段类型和Postman里的配置完全相同
内容的提问来源于stack exchange,提问作者JessciaLau
相关产品推荐
相关产品推荐

