Я использую Javascript SDK от Facebook и не могу сохранить базовые данные пользователя в своей базе данных, используя Ajax и PHP. Я уже пробовал console.log в своем ajax, чтобы увидеть, какие детали передаются, и это правильно. Я предполагаю, что это проблема с моим файлом 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" и "zpr" В МОЕМ ВОПРОСЕ. Я НЕ ТОЛЬКО УВЕРЕН, КАК ДАТЬ 2 ПРАВИЛЬНЫХ ОТВЕТА ЗА ДВУХ ВАС, НО СПАСИБО ОГРОМНОЕ

1
Cisco1991 17 Дек 2015 в 05:51

3 ответа

Лучший ответ

Вы передаете переменные как строки запроса и пытаетесь прочитать их как 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.

1
zpr 17 Дек 2015 в 03:25
 $.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");
                }
            });
1
dann 17 Дек 2015 в 02:56

Попробуй это:

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']);
2
Vaghani Janak 30 Янв 2019 в 08:51