我执行一个mysql查询SELECT * FROM table
WHERE mp3link ='$ songname'我希望变量$ songname =一个名为'key'的jquery变量,它根据播放的歌曲而变化。到目前为止,一切都有效,当我设置$ songname ='illuminati.mp3'时,它将获取并回显文本中的'Illuminati'。但是当我尝试退出php并获取jquery变量时,它不会工作。我读到PHP是服务器端而Jquery是客户端,所以这可能是为什么?但后来我听说有一种叫做AJAX的语言可以做到这一点?
$(".blocksong").on('click', function () {
var key = $(this).attr('key');
EvalSound(this, key);
var this_play = $(this);
$(".blocksong").each(function () {
if ($(this)[0] != this_play[0]) {
$(this).removeClass("blockpause");
}
});
$(this).toggleClass("blockpause");
$(".nowplaying").text("<?php
$songname = " key "; // how do I insert var key here?
$nowplay=mysql_fetch_assoc(mysql_query("SELECT * FROM `soundplum` WHERE mp3link = '$songname'"));
echo $nowplay['name'];
?>");
答案 0 :(得分:1)
在我的所有评论之后,为了给你答案,希望能帮助你:
您想要执行一个(clientside)javascript函数,该函数从您的服务器/数据库中获取数据。 要做到这一点,你需要一个AJAX功能。 AJAX函数调用服务器(在您的情况下,它将调用PHP脚本)并等待以获得答案。一旦得到答案,它就会执行你指定的另一个函数。 看看这里: http://www.w3schools.com/ajax/
既然你已经使用过jQuery,那也看看jQuery的相同版本: http://api.jquery.com/jquery.ajax/
所以这就是你可以做的(jQuery-Version,tuorial的副本):
// in your html / script
// after $(this).toggleClass("blockpause");
$.ajax({
url: "getsongname.php?songname=" + key,
context: document.body
}).done(function(response) {
$(".nowplaying").text(response);
});
你有一个名为getsongname.php
的php脚本,它有这样的东西:
<?php
//...something before that to establish db-connection and stuff...
$songname = $_POST['songname'];
// this is a copy of your code!! Please don't use msql_... anymore!!
$nowplay=mysql_fetch_assoc(mysql_query("SELECT * FROM `soundplum` WHERE mp3link = '$songname'"));
echo $nowplay['name'];
?>
注意,1。不要再使用mysql了。
2.你在php中回应的内容将是AJAx调用中的response
!
我希望这会有所帮助。
答案 1 :(得分:0)
我刚刚意识到我是如何做到这一点的,我添加了另一个名为name的属性并从PHP上面获取了名称...这不是解决如何将jquery插入php的问题的答案,但它作品。如果第一个想法不起作用,似乎你必须找到一种不同的方法来做某事,但通常有办法。感谢Shehary和Jeff提供有关AJAX方法的信息,我最终也必须切换到msqli或PDO!
<强> PHP 强>
while($sound=mysql_fetch_assoc($records)){
echo "<div class='blocksong' name='".$sound["name"]."' key='".$sound["mp3link"]."'>".$sound['name']."</div>";
}
?>
<强> JQuery的强>
$(".blocksong").on('click', function () {
var key = $(this).attr('key');
var name = $(this).attr('name');
EvalSound(this, key);
var this_play = $(this);
$(".blocksong").each(function () {
if ($(this)[0] != this_play[0]) {
$(this).removeClass("blockpause");
}
});
$(this).toggleClass("blockpause");
$(".nowplaying").text(name);
});