关于ajax中报错Uncaught SyntaxError: Unexpected token :

本文探讨了在分布式项目中遇到的AJAX跨域问题,并提供了两种解决方案:一是通过前端设置dataType为jsonp;二是通过服务器端设置响应头,包括允许来源、方法及头部等信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在分布式项目中经常会出现ajax的跨域,而我们一般常用的时在ajax的方法中设置或者从服务端去设置。

    首先来说下这两种方法的正常设计规则。

第一种在ajax中做操作:
$.ajax({
        type:"get",
        dataType:"jsonp",
        url:user_post+"/user/findProperty/"+uid,
        success:function(){
        }
});

第二种在服务器中做操作:

             response.setHeader("Access-Control-Allow-Origin","*");   
	     response.setHeader("Access-Control-Allow-Methods","GET"); //方法根据自己的方式定义
	    

其中的dataType即为jsonp的类型,也就是服务器向客户端发送的值应为jsonp格式,但是如果我们在服务器返回一个实体bean对象的时候就会出现一个报错叫Uncaught SyntaxError: Unexpected token :       对于这个问题开始我的解决方案是考虑后台配置

@ResponseBody注解,然后的然后就是不管用,依然报错依旧。

好,既然还不行那我就用第二种吧。然而之前的错误情况解决了却又出现了另外一种

No 'Access-Control-Allow-Headers' header is present on the requested resource. Origin 'http://localhost:9991' is therefore not allowed access.

这就让我无语了,这出了一个又来一个啊。本人自知技术不熟练,也不能这么玩吧。没办法只能继续修改了。根据错误提示,是缺失头信息。然后我们需要配置缺失的信息。经过查找众多文章与实验。最后加上了下面代码后立马成功

 response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type"); 

个人认为之所以jsonp失败是因为服务器返回的值跟jsonp的格式有冲突,jsonp中每个值都应该是字符串类型,而我的不是。

只能说自己才疏学浅了。


本文纯属个人意见,如有不对之处,还望指出。



处理 JSON 出现错误Uncaught SyntaxError: Unexpected token :


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值