我今天花了很多时间尝试将jQuery变量发送到我的PHP文件并在SQL搜索中使用它。我的第一个问题是,甚至无法将变量正确地转换为PHP。我也收到了关于我的一些SQL代码的错误。
我想要的:jQuery中的变量名为name发送到PHP文件,在SQL文件中使用它来查找音乐家的真实姓名。然后,真实姓名将被发送回HTML文件,并在网页上显示。 MyPHPAdmin和我的数据库已经设置完毕。
jQuery的:
$('li').click(function () {
var name = $(this).text();
$('#prf').attr("class",name);
$('#pic').attr("class",name);
$('#info').attr("class",name);
JSON.stringify (name);
$.ajax({
type: "POST",
url: "ajax-name.php",
data: {name: name}
})
PHP:
$rname = $_POST['name'];
var_dump($rname);
try {
$db = new PDO('mysql:dbname=dbname;host=myhost;charset=utf8', 'user', 'pass');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query="SELECT realname FROM artistmaster WHERE stagename = :name";
$stmt = $db->prepare($query);
$stmt->execute(array("name"=>$rname));
var_dump($rname);
echo 'Success';
$result=$stmt->fetchAll();
print "<pre>";
print_r($result);
print "</pre>";
}
catch(PDOExeception $e)
{
echo $e->getMessage();
}
输出:
NULL NULL
我已阅读$.ajax()
上的文档,但仍然无法弄清楚我做错了什么。我很感激任何帮助,它给了你一点时间。
答案 0 :(得分:0)
试试这个:
$.ajax({
type: "POST",
url: "ajax-name.php",
data: {name: name},
success : function(html) {
// html code, do something with it here
}
});
然后
$rname = $_POST['name'];
$query="SELECT realname FROM artistmaster WHERE stagename = :name";
$stmt = $db->prepare($query);
$stmt->execute(array("name"=>$rname));
您可以使用
获得结果$stmt->fetchAll();
您无法使用mysqli
检索PDO驱动程序结果答案 1 :(得分:0)
要从AJAX请求评估PHP脚本的输出,请为您的请求添加一个返回处理程序:
$.ajax({
type: "POST",
url: "ajax-name.php",
data: {name: name}
}).always(function( html ) {
console.log(html); // this will show the content of the php script in the developer console of your browser
});
每次AJAX请求完成时,都会调用.always()
中定义的函数。当您确保代码有效时,您可以将其更改为.done()
,这仅在AJAX调用成功时调用。您还可以添加.failure()
函数来优雅地处理错误。
另请注意此from the documentation:
$ .ajax()函数是jQuery发送的所有Ajax请求的基础。通常不必直接调用此函数,因为有几个更高级别的替代方法,如$ .get()和.load(),并且更易于使用。
我建议改为使用$.post
功能:
$.post("ajax-name.php", {name: name}, function( html ) {
$('#outputdiv').html(html);
// this will replace the content of a <div id="outputdiv"></div> with the output of the AJAX request
});
答案 2 :(得分:0)
在javascript中警告变量名称并确保它不为null。您可以使用exit; 在php文件中回显$ _POST ['name']。使用success:function(result)接收javascript中已处理的数据并提醒它。 将每个数据存储在php文件中的单个变量中。最后回应他们。