$.post() 为什么我没有收到警报?

$.post() why i am not getting the alert?

我不会将这 2 个值传递给 jsp 页面和 return 一些数据我用警报测试它并且我的值是正确的没有 $.post()

function deleteFunction(courseId, userId) {
    $.post('../controlers/doDelete.jsp', {courseId: courseId, userId: userId}, function (data) {
      alert("somthing here");  
    });
    
    location.reload();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<span onclick="deleteFunction('<%=c.getCourse_id()%>','<%=me.getId()%>');">click me</span>

在该位置使用 location.reload(); 将在 AJAX 调用的 return 之前重新加载页面。 $.post() 产生一个异步操作。也就是说,调用触发到服务器并且脚本在等待 return.

时继续执行

如果您想要在 页面重新加载之前调用 return ,请尝试以下代码:

function deleteFunction(courseId, userId) {
    $.post('../controlers/doDelete.jsp', {courseId: courseId, userId: userId}, function (data) {
        alert("somthing here");
        location.reload();
    });
}

传递给 $.post() 的函数是在 调用 ajax 之后发生的回调return编辑。通过将 location.reload(); 添加到回调函数,您允许调用完成,为您提供了对 returned 数据执行某些操作的机会(在本例中触发 alert ) 然后,在前面的操作完成后,重新加载页面。

或者,您可以使用 $.ajax() 并将 asynch : false 选项传递给它。

function deleteFunction(courseId, userId) {
  $.ajax({
    url: '../controlers/doDelete.jsp',
    type: 'POST',
    dataType: 'json',
    asynch: false,
    data: {
      courseId: courseId,
      userId: userId
    }
  }).done(function(data) {

    alert("something here");
  });

  location.reload();
}

asynch : false 同步强制 ajax 到 运行,因此,脚本停止并等待 ajax 请求完成,而不是 ajax 运行宁在后台。