如何在Laravel项目的jQuery $.get请求中添加指定请求头并解决返回HTML而非JSON的问题
解决jQuery $.get请求返回HTML而非JSON的问题
你遇到的问题是因为服务器没收到Accept: application/json请求头,所以默认返回了HTML格式响应。要添加指定请求头,我们需要把简化的$.get调用换成完整的$.ajax写法($.get是$.ajax的快捷方式,不支持直接配置请求头),具体修改如下:
修改后的完整代码
$('.wilayas').on('change', function(x) { alert(this.value) $.ajax({ url: "{{ route('customer.auth.dayras') }}", method: 'GET', data: { data: this.value }, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, dataType: 'json', // 强制jQuery将响应解析为JSON success: function(data, status) { alert(data); $('.dayras').append(` <option value="-">-</option> `); data.map(dd => { $('.dayras').append(` <option value="${dd.id}">${dd.dayra}</option> `); }) } }); });
关键修改点说明
- 替换
$.get为$.ajax:$.get只支持url、data、回调等基础参数,无法直接设置请求头,而$.ajax提供了完整的配置项,能满足自定义请求头的需求。 - 添加
headers配置:按照你的要求加入Accept和Content-Type请求头,明确告诉服务器我们期望接收JSON格式的响应。 - 增加
dataType: 'json':这是双重保障——即使服务器返回的响应头有小问题,jQuery也会尝试把响应内容解析为JSON,避免出现解析错误导致的后续逻辑失败。
这样修改后,服务器会根据你发送的Accept头返回JSON格式数据,你的回调函数就能正常处理数据啦~
内容的提问来源于stack exchange,提问作者ismail taibi
相关产品推荐
相关产品推荐

