我将jQuery AJAX POST发布到servlet,数据采用JSON String的形式。 我不确定是否发布了数据。另外,我想通过从json对象获取登录名和密码来验证它。
下面是代码段:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<script type="text/javascript">
function doajax(){
var fullname=$("#fullname").val;
var mobileno=$("#mobileno").val;
$.ajax({
url: 'dvsds',
type: 'POST',
dataType: 'json',
data:{ "mobileno":mobileno, "fullname":fullname},
error:function(){
alert("error occured!!!");
},
success:function(data){
alert(data.message);
}
});
}
</script>
我的servlet端代码:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json");
PrintWriter out = response.getWriter();
try {
String message=null;
JSONObject jObj = new JSONObject(request.getParameter("jsondata"));
Iterator<String> it = jObj.keys(); //gets all the keys
String Name=null;
String mobileno=null;
while(it.hasNext())
{
String key = (String) it.next(); // get key
if(key.equals("fullname"))
Name = (String)jObj.get(key);
else if(key.equals("mobileno"))
mobileno=(String)jObj.get(key);
}
if(Name=="abc" && mobileno=="123" )
message="success";
else
message="fail";
JSONObject jsonObject = new JSONObject();
jsonObject.put("message", message);
out.println(jsonObject);
答案 0 :(得分:0)
您不需要对数据进行字符串化...只需将其作为普通的旧javascript对象发送...通过将数据类型指定为json ... jquery将弄清楚如何在请求中打包数据
无需在服务器端更改任何内容
因此,如果您的AJAX呼叫变为:
$.ajax({
url: 'dvsds',
type: 'POST',
dataType: 'json',
data: jsondata,
error:function(){
alert("error occured!!!");
},
success:function(data){
alert(data.message);
}
});
以
的形式在servlet中检索它们String fname = request.getParameter("fullname");
String mobileno = request.getParameter("mobileno");
我认为您需要注意区分大小写
<强> EDITED 强>
我知道您可以将脚本更改为如下所示。
<script type="text/javascript">
function doajax(){
var fullname=$("#fullname").val;
var mobileno=$("#mobileno").val;
var postReqData = {}; // Create an empty object
postReqData['mobileno'] = mobileno;
postreqData['fullname'] = fullname;
$.ajax({
url: 'dvsds',
type: 'POST',
dataType: 'json',
data: postReqData,
error:function(){
alert("error occured!!!");
},
success:function(data){
alert(data.message);
}
});
}
答案 1 :(得分:0)
jQuery.Ajax函数的datatype
属性声明如下:
dataType(默认值:Intelligent Guess(xml,json,script或html))
类型:字符串
您期望从服务器返回的数据类型。
因此,您发送的内容不是JSON字符串。你发送的是普通的旧请求数据。
您可以使用以下命令在servlet中获取此数据:
String mobileno = request.getParameter("mobileno");