如何将$ .post转换为$ .ajax?

时间:2015-06-23 11:27:01

标签: javascript jquery ajax json servlets

我有这个$ .post和平的代码:

$.post("../admin-login",
{
   dataName:JSON.stringify({
   username:uname,
   password:pass,
   })

}, function(data,status){
    console.log("Data:"+data);
    answer = data;
    }
);

我不会将其转换为$ .ajax。在servlet方面,我要求request.getParamter(“dataName”),但我不知道如何编写数据:$ .ajax中的部分,以便我可以得到这样的参数(request.getParamter(“dataName”))?此外,它似乎是这类代码的问题,我认为异步的原因,我不能这样做:

var answer="";

function(data,status){
        console.log("Data:"+data);
        answer = data;
}

并且答案是保持空(“”),即使在我的服务器应答时,在控制台中写成“真”或“假”。这是关于什么的? 提前谢谢。

我发现问题出在click()事件中。当click()完成时,Ajax结束,所以我无法在事件完成之前获取数据。有什么不好的是我无法获取数据因为它已经完成了。有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

function getResult(data) {
  // do something with data
  // you can result = data here
  return data;
}

$.ajax({
  url: "../admin-login",
  type: 'post',
  contentType: "application/x-www-form-urlencoded",
  data: {
   dataName:JSON.stringify({
   username:uname,
   password:pass,
   })    
},
  success: function (data, status) {
    getResult(data);
    console.log(data);
    console.log(status);
  },
  error: function (xhr, desc, err) {
    console.log(xhr);
  }
});

成为

Guest Additions

答案 1 :(得分:0)

您需要查看信息os如何作为查询参数或有效负载到达您的servlet。

请参阅此HttpServletRequest get JSON POST data

答案 2 :(得分:0)

你可以尝试构建你的AJAX请求,如下所示:

var dataName = username:uname, password:pass;

$.ajax({
    url: "../admin-login",
    data: JSON.stringify(dataName),
    type: "POST",
    cache: false,
    dataType: "json"
}).done(function(data, status) {
    console.log("Data:"+data);
    answer = data;
});