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);
}
}
});
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();
}
}