JQuery跨域Ajax

1.前端Js代碼


$.ajax({
						type:"POST",
						async:false,
						url:m_BaseUrl+"FindFirstRoomInfoServlet",
						data:{"roomParent":0},
						dataType : "jsonp",//數據類型爲jsonp  
				        jsonp: "jsonpCallback",//服務端用於接收callback調用的function名的參數  
				        success : function(data)
				        {  
	        				if(data!="empty")
							{
			 				    //var objs=eval("("+data+")");		 				
			 					$("#roomId").empty();
			 					$("#roomId").append("<option value=\"\">請選擇</option>");
			          			var dataArray=data.data; 
			          			
			 					for(var i=0;i<dataArray.length;i++)
			 					{
			 						if(i==0)
			 						{
			 							m_IsEnd=dataArray[i].roombelong;
			 						}
			 						$("#roomId").append("<option value=\""+dataArray[i].roomid+"\">"+dataArray[i].roomname+"</option>");
			 					}
			 					$("#roomId").selectmenu('refresh', true);
			 					
		 					}
		 					else
		 					{
		 						$("#roomId").empty();
			 					$("#roomId").append("<option value=\"\">請選擇</option>");
			 					$("#roomId").selectmenu('refresh', true);
		 					}
		        		}
					});



2.後臺Servlet代碼

json返回到前端時,加一個jsonpCallback 名稱加在json返回值的前面,json字符串用括號括起來

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        
        String sRoomParent = request.getParameter("roomParent") == null ? "0" : request.getParameter("roomParent");
        try
        {
            int iRoomParent = Integer.parseInt(sRoomParent);
            CommUseImp comm = new CommUseImp();
            String sRoomInfo = comm.findRoomInfo(iRoomParent);
            
            if (StringUtils.isNotEmpty(sRoomInfo))
            {
                
                //System.out.println(sRoomInfo);
                JSONObject json = new JSONObject(sRoomInfo);
                
                org.json.JSONArray jsonArray = json.getJSONArray("data");
                
                PrintWriter out = response.getWriter();
                String jsonpCallback = request.getParameter("jsonpCallback");//客戶端請求參數  
                out.println(jsonpCallback + "(" + json.toString() + ")");//返回jsonp格式數據  
                out.flush();
                out.close();
            }
            else
            {
                PrintWriter out = response.getWriter();
                out.write("empty");
                out.close();
            }
            
        }
        catch (Exception e)
        {
            
            e.printStackTrace();
        }
        
    }



發佈了68 篇原創文章 · 獲贊 20 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章