php没有从ajax将详细信息保存到数据库


php not saving details to db from ajax

我使用的是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");
                }
            });