首先,jsonp 只支持ajax的get请求跨域,jquery
$(".login").on("click",function(){ $.ajax({ type:"get", url:"http://localhost:9090/dologin", data:{ 'username':$("#username").val(), 'password':$("#password").val() }, dataType:"jsonp", jsonp:"successCallback", jsonpCallback:"success_jsonpCallback", success:function(data){ console.log("我请求成功了") }, error:function(){ console.log("失败了") } }); })
如上代码,应该在正常的ajax中修改一部分以及添加一部分参数,具体以下ajax
dataType:"jsonp", jsonp:"successCallback", jsonpCallback:"success_jsonpCallback",
dataType必须为“jsonp”json
jsonp为请求url中jquery自动加的一个参数,跨域
http://localhost:9090/dologin?successCallback=success_jsonpCallback&username=yang&password=123&_=1494919496254浏览器
其中若是没有函数
jsonp:"successCallback",
那么jquery会默认为“callback”,此例子中配置为successCallbackjsonp
若是没有url
jsonpCallback:"success_jsonpCallback",
那么函数名称便不会是success_jsonpCallback,而是jquery自动生成的形如“jquery_xxxxxx”的函数get
在后台,必定要这样返回io
jj := "success_jsonpCallback" + "({\"flag\":\"successfuly\"})"
也就是说,不能够直接返回json串,而是要把json串当作参数,放在success_jsonpCallback函数中,把他们当成一个总体返回,在浏览器看来,返回的是
必定要这么写,不然会出错