我正在为我的项目使用facebook API,并在var mydata
if (response.status === "connected")
{
LodingAnimate(); //Animate login
FB.api('/me?fields=movies,email', function(mydata) { //--
console.log(mydata);
if(data.email == null)
{
alert("You must allow us to access your email id!");
ResetAnimate();
}
}
我对此代码没有任何问题。但我想使用ajax调用将此数据发送到进程并插入到数据库中。
我的ajax电话:
function AjaxResponse()
{
var send=document.ge(mydata) **//Here I want to fetch mydata from previous code**
var datas = document.elements['id'].value;
var s = 'connect=1';
$.ajax({
type: "POST",
url: "process_facebook.php",
data: s,send **//Is this correct way to send s and send togather? I have tried with only 's' which works fine but dont know about both togather**
}).done(function(result) {
$("#fb-root").html(result);
});
}
有人可以协助如何在javascript函数中获取mydata并查看代码。
答案 0 :(得分:1)
由于您正在进行的Facebook API调用是异步的,因此无法从您的ge
函数中返回该值。
相反,使用回调,就像Facebook和其他人一样。见下文。
另外,代码片段中隐藏的第二个无关问题的答案是“不,那不是你怎么做的”。我已经给你一个如何在下面做这个的指针。
function AjaxResponse()
{
// Callback here----v arg ---v
document.ge(mydata, function(send) {
var datas = document.elements['id'].value;
$.ajax({
type: "POST",
url: "process_facebook.php",
data: {
connect: 1,
paramname: mydata // <=== I don't know what the name of this param is
}
}).done(function(result) {
$("#fb-root").html(result);
});
}
..让你的代码在Facebook调用其回调时调用回调。
function ge(data, callback) {
// ...
if (response.status === "connected") {
LodingAnimate(); //Animate login
FB.api('/me?fields=movies,email', function (mydata) { //--
console.log(mydata);
if (data.email == null) {
alert("You must allow us to access your email id!");
ResetAnimate();
}
else {
callback(data); // <=== Trigger the callback
}
}
// ...
}
// ...
}