求助:使用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
相关产品推荐
相关产品推荐

