AJAX PHP - 响应是一个具有空值的对象

时间:2016-03-19 18:43:30

标签: javascript php jquery mysql ajax

我有一个小问题可能因为我是ajax编程的初学者,我在调用php文件的ajax jquery中创建一个函数,该文件向数据库发出有关播放器信息的请求。当php文件回复ajax函数时,我得到一个具有空值的对象作为答案。

我的代码中是否遗漏了一行?还是我忘记做的事情?

这是我的代码, AJAX功能:

                        $.ajax({
                            method: 'GET',
                            url: "webservices/get_infos.php",
                            timeout: kTimeout,
                            success: function(response) {
                                alert(response);
                            },
                            error: function() {
                                alert('error');
                            }
                        });

和php文件:

<?php 

include("connexion_bdd.php");


$_GET['mail'] = $mail;


$req = $bdd->prepare('SELECT * FROM joueurs WHERE mail = ?');
$req->execute(array($mail));

$reponse = $req->fetch();


$return = array();
$return["user_name"] = $reponse["nickname"];
$return["profile_pic"] = $reponse["profile_pic"];
$return["user_id"] = $reponse["id"];

print(json_encode($return));

?>

在ajax功能的成功中,我明白了:

{&#34; USER_NAME&#34;:空,&#34; profile_pic&#34;:空,&#34; USER_ID&#34;:空}

虽然数据库不是null。 你认为我的错在哪里? php文件还是ajax函数?或两者兼而有之?

感谢您的帮助:)

修改: 我根据传递变量AJAX-&gt; PHP的方式改变了我的代码。 我已经在我的数据库上测试了我的sql查询,它工作正常,但是我将对象从我的php文件传递到AJAX / JS文件的succes函数后仍然存在null值的问题。 关于我的代码有什么问题的任何想法?

再次感谢。

1 个答案:

答案 0 :(得分:1)

这里有两个问题。

首先,您不是在jQuery AJAX请求中发送mail参数。您需要将GET参数附加到url键下的URL末尾:

$.ajax({
    method: 'GET',
    url: "webservices/get_infos.php?mail=youremail@gmail.com",
    timeout: kTimeout,
    success: function(response) {
        alert(response);
    },
    error: function() {
        alert('error');
    }
});

第二个问题是你的PHP脚本中的$mail变量赋值向后。它应该是

$mail = $_GET['mail'];
当您使用GET请求调用脚本时,PHP会自动设置

$_GET['mail']。但是,由于您在准备好的SQL语句中引用了$mail,因此您希望将$_GET['mail']的值分配给$mail