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

Javascript 如何将$.post转换为$.ajax?,javascript,jquery,ajax,json,servlets,Javascript,Jquery,Ajax,Json,Servlets,我有这个$。后和平的代码: $.post("../admin-login", { dataName:JSON.stringify({ username:uname, password:pass, }) }, function(data,status){ console.log("Data:"+data); answer = data; } ); 我不想把它转换成$.ajax。在servlet方面,我要求request.getparameter(

我有这个$。后和平的代码:

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

}, function(data,status){
    console.log("Data:"+data);
    answer = data;
    }
);
我不想把它转换成$.ajax。在servlet方面,我要求request.getparameter(“dataName”),但我不知道如何在$.ajax中编写data:section,这样我就可以获得这样的参数(request.getparameter(“dataName”))?另外,这类代码似乎有问题,我正在分析异步的原因,我不能这样做:

var answer="";

function(data,status){
        console.log("Data:"+data);
        answer = data;
}
这个答案保持为空(“”),即使在控制台中,当我的服务器回答时,实际上写的是“true”或“false”。这是怎么回事? 提前谢谢


我发现问题出在click()事件中。当click()完成时Ajax完成,所以我无法在事件完成之前获取数据。糟糕的是,我无法获取数据,因为数据已经完成。有人知道如何解决这个问题吗

您需要查看操作系统如何将信息作为查询参数或负载发送到servlet


参见此

您可以尝试按如下方式构造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;
});
变成

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

示例中
$.post
的第二个参数是定义数据的方式。为什么不试试呢?你知道为什么我不能写:var result=“”;成功:函数(数据,状态){console.log(数据);console.log(状态);结果=数据;}?谢谢。如果你想这样做,你需要做
var result=“”
在调用
$.ajax
之前,然后在success函数中执行
result=data
。但要小心,因为这是异步的。是的,异步让我很头疼。我尝试使用async:false,但它仍然不会等待服务器响应,结果仍然为空。您还可以查看承诺,因为它们将解决您的问题。这是一个很好的回答,我发现问题出在click()事件中。当click()完成时Ajax完成,所以我无法在事件完成之前获取数据。糟糕的是,我无法获取数据,因为数据已经完成。你知道如何防止这种行为吗?谢谢
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);
  }
});