前面在Ajax的使用中,遇到了1個這樣的問題:界面開發(fā)出來是用在手機上使用的,但是數(shù)據(jù)是通過服務器提供的API,在界
面上使用JQuery的Ajax來調用數(shù)據(jù),開始怎樣也調用不到,而且不報毛病,后面現(xiàn)在閱讀器測試好了,在放手機上加載本地的面。
1、服務器關鍵代碼以下:
/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/javascript");//這個要注意PrintWriter out = response.getWriter();String callback = request.getParameter("callback");out.print(callback+ "([{ name:'John',age:'19'},{ name:'joe',age:'20'}])");System.out.println("callback = " + callback);out.flush();out.close();}
$.ajax({url:"http://localhost:8081/JsonpServer/JsonpServlet",
dataType:"jsonp",jsonp:"callback",//傳遞給要求處理程序或頁面的,用以取得jsonp回調函數(shù)名的參數(shù)名(默許為:callback),需和服務器端1致jsonpCallback:"person",//自定義的jsonp回調函數(shù)名稱,默許為jQuery自動生成的隨機函數(shù)名success:function(json){//alert(json[0].name);}});// 相當于重寫success后履行的函數(shù)(自定義為person)function person(json){alert("I am person function...");alert(json[0].name);}
分析:最開始沒有效果是 dataType:"json", 所以測試了很久都沒有出來, 后面修改成 dataType:"jsonp", 就能夠使用了。緣由是 dataType 為 json 數(shù)據(jù)格式的時候,不能跨域訪問,jsonp 是跨域訪問的。
下一篇 Java學習筆記27