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

求助:使用jQuery发送JSON数据失败,附请求及PHP代码仍报错

问题排查与修复方案

嘿,我帮你找出了代码里的两个关键问题,正是它们导致了报错:

1. GET 请求的 data 参数格式错误

你用 JSON.stringify(username) 把对象转成了JSON字符串传给data,但GET请求的参数应该是键值对格式,jQuery会自动把对象转换成URL查询参数(比如?username=tom)。你现在传的JSON字符串PHP端无法正确解析,而且GET请求本身也不是通过JSON来传递参数的。

2. 重复解析JSON响应

你设置了 dataType: 'json',这会让jQuery自动把服务器返回的JSON响应解析成JavaScript对象。但你在done回调里又调用了JSON.parse(response),这就会报错——因为response已经是解析好的对象,不是JSON字符串。

修正后的代码

JavaScript 代码

var username = {'username' : 'tom'};
var request = $.ajax({
    url : 'test.php',
    method : 'GET',
    data : username, // 直接传递对象,无需JSON.stringify
    dataType : 'json'
});
request.done(function(response) {
    // response已经是解析好的对象,直接使用即可
    console.log(response);
});
request.fail(function(xhr, status, error) {
    console.log(error);
});

PHP 代码(可选:如果需要接收前端参数)

// 可选:获取前端传递的username参数,用??处理参数不存在的情况
$username = $_GET['username'] ?? '';
// 返回包含参数的响应,方便你验证是否接收到
echo json_encode(array("bar" => "bar", "received_username" => $username));

这样修改后,你的请求就能正常工作了,控制台会输出服务器返回的{bar: "bar"}(如果加了可选代码,会多received_username: "tom")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:40:58