javascript:点击按钮后进行POST调用

javascript:点击按钮后进行POST调用,javascript,jquery,ajax,http-post,buttonclick,Javascript,Jquery,Ajax,Http Post,Buttonclick,我想通过添加一个事件监听器,在按钮点击时进行POST,但是使用ajax我可以进行调用,但我没有任何数据或相同的错误标准 我发现的一种方法是使用表单提交事件,但我想这不是正确的方法,我应该在点击按钮时进行POST调用 <div id="googleSignInDiv" class="cols-row "> <form id="googleSignInform" action="/connect/google" method="post" target="goog

我想通过添加一个事件监听器,在按钮点击时进行
POST
,但是使用ajax我可以进行调用,但我没有任何数据或相同的错误标准

我发现的一种方法是使用表单提交事件,但我想这不是正确的方法,我应该在点击按钮时进行POST调用

<div id="googleSignInDiv" class="cols-row ">
   <form id="googleSignInform" action="/connect/google" method="post"
      target="google-auth-window">
      <button type="submit" class="btn-primary btn-sub-action  gss-col-12 type-300 social-button google" 
         id="signin-login-google-button" >
      <span class="icon social-icon"></span>
      <span class="btn-label">
      {{[loc-signin-google]}}
      </span>
      </button>
   </form>
</div>

在这之后,我有了打开新窗口的代码。如何进行post调用并将其目标标记为我在代码中定义的
googleauth窗口
?或者使用表单是正确的方法?

表单中类型为
提交
的按钮的默认行为是提交它,因此您必须首先使用
event.preventDefault()
来防止默认行为,然后单击按钮(例如:验证等)。在本例中,您可以调用进行AJAX调用的函数(
makeAjaxRequest
)。您的代码将如下所示:

$("#signin-login-google-button").click(function(event){
  event.preventDefault();
  makeAjaxRequest();
});
function makeAjaxRequest() {
  $.ajax({
      url: '/connect/google',
      type: 'POST',
      success: function(data){
        //code to open in new window comes here
      }
  });
}

ajax调用成功后,您可以编写代码在新窗口中打开它。你也可以参考这一点。

我想你的问题不在于如何处理
Ajax
调用,而在于如何将谷歌用户登录与用户集成,而不是通过提交表单,而是应该异步完成。(纠正我的错误:))

我认为,如果您关注google文档,您可能会看到google已经在(
platform.js
)中提供了一个库,用于通过ajax处理它,并且还以单独的形式打开它

有了它,你可以有一个谷歌登录按钮,只有

<div class="g-signin2" data-onsuccess="onSignIn"></div>

它会打开一个登录窗口,并返回到您在GoogleAPI配置中提供的回调url


如果你在任何地方卡住了,请告诉我。:)

您需要在$.ajax()调用中添加详细信息,以处理来自POST处理程序的任何响应。对于一个基本的点击式ajax示例,这并不能解决问题,在这个特定的例子中,调用永远不会进入成功块。我想我需要做的不是ajax,而是简单的HTTP POST,我不知道该怎么做。谢谢,虽然它看起来是一个很好的解决方案,但恐怕不适合我的用例,因为我们有一个以特定方式编写的服务,用这种方式实现它就像重新构建一切一样
<div class="g-signin2" data-onsuccess="onSignIn"></div>