最近一直困扰我的一个问题:
问题描述:
在jsp页面使用ajax返回数据时,后台的servlet一直取不到数据。(userid一直为空)
index.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<!-- meta使用viewport以确保页面可自由缩放 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 引入 jQuery Mobile 样式 -->
<link rel="stylesheet"
href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<!-- 引入 jQuery 库 -->
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<!-- 引入 jQuery Mobile 库 -->
<script
src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js">
</script>
<script type="text/javascript">
(function ($) {
//扩展方法获取url参数
$.getUrlParam = function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
};
})(jQuery);
//得到url参数
var userid = $.getUrlParam('userid');
alert(userid);
//ajax
var options = {
url: "${pageContext.request.contextPath}/servlet/UserMsgServlet",
type: "GET",
dataType: "String",
data:userid ,
async:true,
success: function (data) {
alert(data.detail);
}
};
$.ajax(options);
</script>
<script type="text/javascript">
/* $("#panelButton").click(function(){
$.getUrlParam = function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
};
})(jQuery);
var userid = $.getUrlParam('userid');
$.ajax({
url:'${pageContext.request.contextPath}/servlet/UserMsgServlet',
type:'get',
async:true,
data:{userid:userid},
datatype:'text/json',
success:function(data){
$("#myPanels").append("p"+data+"</p>");
}
});
}); */
</script>
</head>
<body>
<div data-role="page" id="pageone">
<!-- 面板内容 -->
<div data-role="panel" id="myPanels">
<ul data-role="listview">
<li><a href="#">列表项</a></li>
<li><a href="#">列表项</a></li>
</ul>
</div>
<!-- 头部 -->
<div data-role="header">
<!--头部功能-->
<div class="ui-grid-a">
<div class="ui-block-a">
<a id="panelButton" href="#myPanels" data-role="button" data-inline="true" data-icon="bars" >面板</a>
</div>
<div class="ui-block-b" style="text-align:right">
<a id="Search" href="${pageContext.request.contextPath }/servlet/UserMsgServlet" data-role="button" data-icon="Search">获取用户</a>
</div>
<!-- <div class="ui-block-c">
<input type="search" name="search" id="search"
placeholder="搜索内容...">
</div> -->
</div>
</div>
<!-- 中部 -->
<div id= "middle "data-role="main" class="ui-content"></div>
<!-- 底部 -->
<div data-role="footer" style="text-align:center " data-position="fixed">
<div data-role="navbar" data-iconpos="bottom">
<ul>
<li><a href="#" data-role="button" data-icon="info" >收件箱</a></li>
<li><a href="#" data-role="button" data-icon="grid" >待阅</a></li>
<li><a href="#" data-role="button" data-icon="star" >待办</a></li>
</ul>
</div>
</div>
</div>
</body>
</html>
UserMsgservlet的代码如下:
package oa.webservice.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oa.webservice.test.ClientTest1;
public class UserMsgServlet extends HttpServlet {
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json,charse=utf-8");
String userid = request.getParameter("userid");
System.out.println(userid);
String userName = ClientTest1.getClientTest1().oa_IsUserExist();
request.setAttribute("userName", userName);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
先记录下来看看能不能解决。
知识点:ajax,servlet的作用域。