js跨域访问有时候确实不好搞定,所以在特定的情形下就能跨域访问,这里我用的是简单的get提交,post很难搞,不借助其他手段根本实现不了,这里只讲get提交,然后获取返回数据,下面一组代码,我验证过的,直接运行即可,一个页面,一个后台java,java用的springmvc实现
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=charset=utf-8">
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<title>控制台</title>
</head>
<script type="text/javascript">
$(function(){
$.ajax({
data:{status:22,schedulerId:33},
url:"http://127.0.0.1:8080/consoleAction/a.do",
type : "get",
cache : false,
dataType : 'jsonp',
jsonp: "jsonpCallback",//服务端用于接收callback调用的function名的参数
success:function(data){
alert(data.result);
},
error:function(msg){
alert("error!!");
}
});
});
function callback(data){
alert(data);
}
</script>
<body>
</body>
</html>
java代码
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.alibaba.fastjson.JSON;
/**
*
* @author songxiuliang
*
*/
@Controller
@RequestMapping("consoleAction")
public class ConsoleAction {
@RequestMapping(value="a.do" ,method=RequestMethod.GET)
public void a(HttpServletRequest request, HttpServletResponse response) throws IOException {
try {
Map<String,String> map = new HashMap<String,String>();
map.put("result", "contentdddrrr");
String jsonpCallback = request.getParameter("jsonpCallback");//客户端请求参数
response.getWriter().print(jsonpCallback+"("+JSON.toJSONString(map)+")");//返回jsonp格式数据 (这个格式必须这样写,否则跨域访问返回ajax会进入error函数,这个跟不跨越有点区别,其他都一样)
} catch (IOException e) {
e.printStackTrace();
}
}
}