我使用的是Facebook的Javascript SDK,无法使用Ajax和PHP将用户的基本详细信息保存到我的数据库中。我已经在ajax中尝试了console.log,看看传递了哪些细节,它是正确的。我猜这是我的PHP文件的问题。非常感谢您的帮助。
function testAPI() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
var data = {
name: response.first_name + response.last_name,
email: response.email,
gender: response.gender
};
$.ajax({
type: "POST",
url: "http://www.lookingfour.com/std.php",
data: data,
cache: false,
dataType: 'json',
success: function () {
console.log('Successful login for: ' + data);
alert('success');;
}
});
});
}
这是我的PHP文件
std.php
<?php
$link = mysql_connect('lookingfour.com', 'lookfoursand', 'look4sandbox');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db('lookfoursandbox', $link);
if (!$db_selected) {
die ('Can''t use foo : ' . mysql_error());
}
$name = $_POST['name'];
$email = $_POST['email'];
$gender = $_POST['gender'];
$sql = "INSERT INTO test_table(id, user_name, user_email, user_gender)
VALUES(NULL,'$name','$email','$gender')";
if(!mysql_query($sql))
{
die('Error : ' . mysql_error());
}
mysql_close($link);
//}
?>
仔细检查了数据库的详细信息,这不是问题所在。
更新:通过结合"dann"answers"zpr"对我的问题的建议来修复它。我只是不知道如何给你们两个正确的答案,但非常感谢
试试这个:
var dataString = 'name='+ name+'&email='+email+'&gender='+gender;
$.ajax({
type: "POST",
url: 'http://www.lookingfour.com/std.php',
data: dataString,
cache: false,
success: function()
{
alert('success');
}
});
//php file
$name=mysql_escape_String($_POST['name']);
$email=mysql_escape_String($_POST['email']);
$gender=mysql_escape_String($_POST['gender']);
您将变量作为查询字符串传入,并尝试将它们作为POST
变量读取。与其用&
s来分隔它们,不如将它们制作成一个JSON对象,并将其传递给您的ajax调用,同时指定POST方法。示例JSON对象如下所示:
var data = {
name: name,
email: email,
gender: gender
}
然后将其作为数据传递到ajax调用中:
$.ajax({
method: POST,
data: data,
...
)};
还要注意method: POST
,我不认为有一个名为"type"的有效属性。
编辑:type
显然是method
的有效别名。
$.ajax({
type: "POST",
url: "std.php",
data: {
name: name,
email: email,
gender: gender
},
success: function () {
console.log('Successful login for: ' + name + email + gender);
alert("Success");
}
});