0

快速背景:我创建了一个基本的 Facebook 应用程序,因此用户可以“喜欢”来自 Facebook 以外网站的帖子。用户进行身份验证,被access_token一些 JS 收集的用户重定向,并通过隐藏字段插入表单并传递给POST请求。(不一定相关,但我也使用一些 JS 在用户从 Facebook 重定向到该网站后自动提交“喜欢”。)

在 HTTP 请求发送(并且成功)之后,用户被重定向到响应页面,只呈现“true”打印在屏幕上。有没有办法阻止这种重定向?一旦提交表单,我已经设置了一些 JS 来交换一些div内容,但我似乎无法阻止它们被引导走。

提前感谢您的任何想法。

HTML 摘录

    <!-- *Authentication Section* -->
    <div id="submit_like">
      <form>
       <a id="facebook-authentication" href="https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=[MY_APP_ID]&redirect_uri=[MY_POST-AUTHORIZATION_REDIRECT_URL]&scope=offline_access,publish_stream">
       <div id="facebook-authentication-button">
       START THE VOTE!
       </div>
       </a>
      </form>
    </div>

<!-- After Authentication, this form is submitted -->
<form id="likeform" method="POST" action="https://graph.facebook.com/[FACEBOOK_ID]/likes"  >
  <input id="AuthCode" name="access_token" type="hidden" value="123">
</form>
4

1 回答 1

1

您可以使用 jQuery.post()方法提交表单而无需任何页面重定向。在你的情况下:

$.post("https://graph.facebook.com/[FACEBOOK_ID]/likes", $("#likeform").serialize()).done(function(data){

    // redirect to new page or do nothing to stay put.
    alert(data); //Show the returned value

});

辅助函数接受表单输入并以.serialize()URL 编码表示法创建一个字符串。此字符串作为参数发送,其中将包含 access_token 隐藏表单输入。

提醒一下,一定要包含 jQuery。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
于 2013-04-08T23:22:49.573 回答