如何解决ie8下的跨域post请求
方法/步骤1打开IE浏览器,在工具菜单下选择Internet选项,打开Internet选项卡2切换到安全选项卡下,点击可信站点,然后单击站点按钮3可信站点窗口输入网址到可信站点的区域,点击添加按钮,网址则会添加到网站列表下,最后关闭可信站点窗口4还是在安全选项卡下的可信站点,点击自定义级别5打开受信任的站点区域窗口,找到跨域浏览窗口和框架选择启用6在当前窗口中继续往下翻,通过域访问数据源也选择启用,点击确定关闭受信任的站点区域窗口7在Internet窗口也点击确定按钮,同时关闭浏览器8在请求的js脚本中添加是否允许跨域访问的权限,jQuery.support.cors默认值为true,则代表允许;反之,不允许。设置完成,重新打开浏览器验证即可
jquery为什么要序列化
用ajax传递表单的数据,如果不进行表单的序列化,要一个参数一个参数的写,太麻烦,序列化的话,一句代码搞定。data:$('form').serialize(),这样一句话解决复杂的表单ajax的post传值过程。
提交时数据是直接以原始格式存储在body中而不是以键值对的方式附加到url中的,所以后台程序是无法直接识别的,这时候就需要在提交前先把data转换为 a=1&b=2&c=3 的格式再提交,这就是序列化。
当然,如果数据是通过表单提交的,那么不管是post方式还是get,浏览器会自动进行序列化,无需前端js再做任何处理。
用java写个接口实现数据对接
application/x-www-form-urlencoded:
application/json:
通过上面例子发现,结构简单的时候formdata数据更简单,结构复杂的时候(array)JSON数据更简单。
题目问到Java接口,应该分三种情况。
如果是JSP等服务器端模板技术,再加上一些jQuery AJAX。
POST的时候,默认contentType都是application/x-www-form-urlencoded。可改成application/json,看自己。
如果用前端框架,Angular、React、Vue。
POST的时候,默认contentType都是application/json。建议用JSON,别改。JSON就是JS的一个子集,既方便JS解析,也方便人读。
Java服务器端对其他服务器端通信。
其实更建议用XML,特别是和第三方服务通信的时候。如果公司内部自己的几个Java服务通信,用JSON就好。
现在Java Web开发,最常见的是上面第2种情况。所以,当用Spring MVC的时候,建议用@RestController
如果用@Controller,需要这么写:
如果用@RestController,不需要写@ResponseBody,也不需要指定consumes和produces类型,默认都是application/json。可以简化成这样:
jquery使用ajax怎么提交form
$("button").click(function(){$.post("你的服务器文件",{//表单里的内容name:"DonaldDuck",city:"Duckburg"},function(data,status){alert("数据:"+data+"\n状态:"+status);});});
发表评论