1)问题:
在做前端项目的时候,遇到后端给的接口中含有特殊的字符{}。如下图所示:
其中在这里power是我发送过去的数据,这个接口的意思就是前端发生过去的数据power作为后端的接口路劲。
前端使用ajax发送数据时会出现访问接口成功但是没有数据返回的问题:
2)问题原因查找
使用类似postman工具进行调试发现,接口成功和我使用ajax发生数据接口失败的不同点。
成功调用接口并返回数据的调试:
调用接口成功但是不返回数据的接口:
从上面失败和成功的接口对比,发现:
调试工具发生成功是因为将接口中的{power}直接转为前端发生的数据1,而我自己写的ajax发生数据好像接口并不能将{power}替换为1,而且发现我写的ajax接口在浏览器上请求的网址后面还有%7Bpower%7D这样的乱码。
我猜这里是使用ajax进行发生数据,ajax传递的路径好像解码不了{}这样的特殊字符。
3)我的解决方法:
我发生过去的power只有1或2这两个值,1对应A接口,写2时对应的就是B接口,我直接将1或2写在接口的后面,并不发送power数据过去,我猜我发送的power应该是先放在接口的路劲上,后端并不是直接接受我发送的power数据,而是直接在接口路劲上进行截取获取power的数据,我改后的代码如下:
这样改我就调用接口成功并能够接收数据:
所以如果接口上要前度传递什么数据过去,可以使用url拼接的方式去使用ajax发送数据,如果还有问题就先使用类似postman的网页调试工具,成功发生请求后和自己发生的请求进行对比看哪里不同。
4)我的思考:
因为我没学vue框架,不知道使用es6进行传递数据的话是不是传递的数据就可以放在接口的路径上,有大神有什么好的方法希望分享一下,谢谢。