繁体   English   中英

将json传递给php并获得响应

[英]Passing json to php and getting response

我是php / ajax / jquery的新手,遇到了一些问题。 我正在尝试将json传递到php文件,使用json数据运行一些任务,然后发出响应。 我正在使用facebook api来获取用户登录信息,获取详细信息,将详细信息翻译为json,将json发送到服务器并让服务器检查用户ID是否已存在于数据库中。 这是我的javascript / jquery

 function checkExisting() {

FB.api('/me', function(response) {
  console.log('Successful login for: ' + response.id );

    var json = JSON.stringify(response);
    console.log(json);

    $.ajax({
            url: "php.php",
            type: "POST",           
            data: {user: json},
            success: function(msg){

                  if(msg === 1){
                     console.log('It exists ' + response.id ); 
                  } else{
                       console.log('not exists ' + response.id      ); 
                  }
                }
        })



});
}

这是我的PHP文件

   if(isset($_POST['user']) && !empty($_POST['user'])) {

$c = connect();
$json = $_POST['user'];
$obj = json_decode($json, true);
$user_info = $jsonDecoded['id'];

$sql = mysql_query("SELECT * FROM user WHERE {$_GET["id"]}");
$count = mysql_num_rows($sql);

if($count>0){
echo 1;
} else{
echo 0; 
} 

 close($c);
}

function connect(){
$con=mysqli_connect($host,$user,$pass);

if (mysqli_connect_errno()) {
  echo "Failed to connect to Database: " . mysqli_connect_error();
 }else{
return $con;
}
 }

 function close($c){
mysqli_close($con);
  }

我希望它根据用户ID是否已在表中返回1或0,但它只返回很多html标记。 json看起来像这样

{"id":"904186342276664","email":"ferrylefef@yahoo.co.uk","first_name":"Taak","gender":"male","last_name":"Sheeen","link":"https://www.facebook.com/app_scoped_user_id/904183432276664/","locale":"en_GB","name":"Tadadadn","timezone":1,"updated_time":"2014-06-15T12:52:45+0000","verified":true} 

修复查询部分:

$sql = mysql_query("SELECT * FROM user WHERE {$_GET['id']}");

或另一种方式:

$sql = mysql_query("SELECT * FROM user WHERE ". $_GET['id']);

那么在ajax中使用dataType总是更好

    $.ajax({
            url: "php.php",
            type: "POST",           
            data: {user: json},
            dataType: "jsonp", // for cross domains or json for same domain
            success: function(msg){

                  if(msg === 1){
                     console.log('It exists ' + response.id ); 
                  } else{
                       console.log('not exists ' + response.id      ); 
                  }
                }
        })



});

$jsonDecoded在PHP的哪里分配? 看起来还没分配给我。

我想你的意思是说:

$obj = json_decode($json, true);
$user_info = $obj['id'];

而且您的SELECT毫无意义。 您在POST期间引用的$_GET 也许您是想说:

$sql = mysql_query("SELECT * FROM user WHERE id = {$user_info}");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM