如何解决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,需要这么写:

jquery.post,jQuerypost请求

如果用@RestController,不需要写@ResponseBody,也不需要指定consumes和produces类型,默认都是application/json。可以简化成这样:

jquery使用ajax怎么提交form

$("button").click(function(){$.post("你的服务器文件",{//表单里的内容name:"DonaldDuck",city:"Duckburg"},function(data,status){alert("数据:"+data+"\n状态:"+status);});});