首先,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函數中,把他們當成一個總體返回,在瀏覽器看來,返回的是
必定要這麼寫,不然會出錯