2013-04-08 70 views
0

快速背景:我创建了一个基本的Facebook应用程序,以便用户可以“喜欢”来自Facebook之外的网站的信息。用户进行身份验证,被重定向到他们的access_token,这是由某些JS收集的,并通过隐藏字段插入到表单中,并传递给POST请求。 (不一定相关,但我也使用一些JS在用户从Facebook重定向到站点后自动提交'like'。)提交POST请求到Facebook图表后可能会停止重定向吗?

在HTTP请求被发送(并且成功)之后,用户被重定向到响应页面,只在屏幕上显示“真”。有没有办法阻止这个重定向?一旦表单被提交,我已经设置了一些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> 
+0

是否有任何理由不能使用PHP? – phwd 2013-04-08 22:21:30

+0

@phwd是的 - 很简单。我不知道/使用PHP。 :) – justinraczak 2013-04-09 04:20:48

回答

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>