当用户通过 facebook js sdk 登录时,从 jquery 调用 $.post 时遇到问题。回调函数中的响应是当前页面的 html,而不是 php 文件中的回显。当用户以非 Facebook 用户身份登录时,一切正常。我似乎找不到关于这个问题的任何文档,并且觉得我已经正确地遵循了 facebook 文档,但显然缺少一些东西。
我的流程如下: 1.) 用户登录(通过 facebook 或直接登录我的网站)。2.) 用户单击保存链接以将业务保存到他们的个人资料中。3.) 保存链接使用 jquery 对 php 文件运行 $.post 请求以更新数据库。4.) php 返回“1”表示成功或“0”表示失败。5.) jquery 提醒用户失败或成功时停用按钮。
HTML
<!DOCTYPE html>
<html xmlns:fb="http://ogp.me/ns/fb#">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex, nofollow" />
<!-- scripts -->
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<script src="scripts/pagejs.js"></script>
<!-- end scripts -->
<title><? echo $pageTitle; ?></title>
</head>
<body>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=999999999999999";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<header>
... page html...
<a href='javascript:saveBiz(64)' class='grey-button' title='Save business and add it to your profile.' id='save64'><img src='images/save-small.png' alt='' width='10' height='10' />Save</a>
... rest of page ...
pagejs.js
$(function() {
$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_US/all.js', function(){
window.fbAsyncInit = function() {
FB.init({
appId: '999999999999999',
channelUrl: '//www.domain.com/channel.html',
status: true,
cookie: true,
xfnml: true
});
$('#loginbutton,#feedbutton').removeAttr('disabled');
FB.getLoginStatus(updateStatusCallback);
};
});
});
function saveBiz(bizID) {
submitAction = "save";
$.post("updates.php", { businessID : bizID, action: submitAction },
function(responseData){
if(responseData == "0"){
alert('An error occurred while saving the business. Please try again. If the problem persists, please contact us.');
}
else {
alert(responseData); // for testing purposes
$('#save'+bizID).fadeTo("fast", .5).removeAttr("href");
$('#save'+bizID).text('Saved');
$('#save'+bizID).attr('title','Business saved.');
}
},
"text"
);
}
更新.php
<?php
require_once 'includes/classes/customer.class.php';
session_start();
$custID = $_SESSION['customerID'];
$action = $_POST['action'];
$bizID = $_POST['businessID'];
$returnVal= '0';
if($custID && $bizID && $action == 'save') {
$returnVal = customers::saveUserBusiness($custID, $bizID);
}
elseif($custID && $bizID && $action == 'remove') {
$returnVal = customers::removeUserBusiness($custID, $bizID);
}
echo $returnVal;
?>
提前感谢您的任何帮助。请让我知道上面是否缺少某些内容以帮助诊断问题。