我有一个小问题可能因为我是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值的问题。 关于我的代码有什么问题的任何想法?
再次感谢。
答案 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
。