我有一个网站,它基本上是一个音频播放器和屏幕上的集成歌词查看器,用户应该能够与他们听到的音乐同步。我只有一个问题,那就是;我怎么能从javascript函数调用mysqli更新语句?当用户单击一个保存按钮时,内容会被抛入div中,我希望在运行JavaScript之后使用PHP来获取该内容并将其放入数据库中。
最好的方法是什么?
为什么这不起作用?
function saveinPHP() {
//alert("Came here");
//var superstr = $( "#savelyric" ).text();
var superstr = 'lol';
$.ajax({
type: "POST",
url: "includes/sendlyrics.php",
data: superstr,
cache: false,
contentType: false,
processData: false,
success: function(data){
alert("---"+data);
alert("Settings has been updated successfully." + data + "~~~" + superstr);
//window.location.reload(true);
}
});
}
然后是PHP:
<?php
include ('db_connect.php');
$data = $_POST['data'];
$query = "UPDATE song SET time=". $data ." WHERE id='1'";
mysqli_query($query);
?>
答案 0 :(得分:0)
将PHP写在一个完全独立的专用文件中,该文件接受POST变量,构造SQL查询并将它们插入数据库。然后让您的JavaScript函数使用POST请求将数据发送到此PHP文件。
浏览器中的JavaScript无法与数据库交互。它只能向服务器发送GET / POST请求,这些请求可以捕获这些请求并将附加的数据放入数据库。
答案 1 :(得分:0)
首先,当您将字符串指定为data
时,jQuery将按原样发送。
您使用的字符串"lol"
未使用PHP理解的POST数据的任何标准格式进行格式化。
$_POST
中没有数据。
将jQuery传递给对象:
data: { data: superstr }
第二,false
不是上述任何一种标准格式的内容类型。 jQuery默认会使用适当的内容类型。删除此覆盖:
contentType: false,
第三次,processData: false,
会破坏对象转换为表单编码数据。去掉它。
第四,必须引用SQL中的字符串。您没有引用data
。
$query = "UPDATE song SET time='$data' WHERE id='1'";
请注意,这仍然容易受到SQL注入攻击,您应该fix that。