我需要具备此功能:使用Facebook登录的用户登录。一旦用户连接,一些Facebook数据需要使用POST方法发送,因此另一个页面(setSes.php)可以处理数据。
我已经创建了下面的代码,(添加了一个额外的警报来查看数据是否应该按原样加载,哪个工作正常),但不知何故,页面setSes.php没有被调用。
function login() {
FB.login(function(response) {
if (response.status === 'connected') {
document.getElementById('status').innerHTML = 'Connected';
FB.api('/me', 'GET', {fields: 'first_name,last_name,name,id,link,gender,locale,picture.width(9999).height(9999)'}, function(response) {
var id=response.id;
var firstName=response.first_name;
var lastName=response.last_name;
var picture=response.picture.data.url;
alert("Selected ID= "+id);
$.ajax({
url:"/setSes.php ",
method:"POST",
data:{
UID: "id",
firstName: "firstName",
lastName: "lastName",
picture: "picture"
}
});
});
} else if (response.status === 'not_authorized') {
document.getElementById('status').innerHTML = 'Not connected';
} else {
document.getElementById('status').innerHTML = 'Not able to login';
}
}, {scope: 'email'});
}
setSes.php
<?
include_once 'includes/db_connect.php';
include_once 'includes/functions.php';
sec_session_start();
$stmt = $mysqli->prepare("INSERT INTO users(first_name, last_name, oauth_uid, picture
) VALUES (?, ?, ?, ?)");
$stmt->bind_param('ssss', $_POST["firstName"], $_POST["lastName"], $_POST["UID"], $_POST["picture"]);
$stmt->execute();
$stmt->close();
echo "I ran";
?>
答案 0 :(得分:1)
在ajax调用中,您传递字符串,而不是获取的变量。对于您的评论,setSes.php
文件位于同一目录中,因此请尝试此...
var id = response.id,
fName = response.first_name,
lName = response.last_name,
pic = response.picture.data.url;
$.ajax({
method: "POST",
url: "setSes.php",
data: { UID: id, firstName: fName, lastName: lName, picture: pic },
success: function(response) {
alert('SUCCESS: ' + response);
},
error: function() {
alert('ERROR');
}
});