Javascript AJAX和PHP,不发送数据
我有一个奇怪的问题,我似乎无法解决 我试图做的是,在一个页面上调用jQuery函数,将该函数的参数发送到同一服务器上的另一个.php文件,让该php文件读取变量,然后将其插入数据库 函数触发器位于div上,如下所示:Javascript AJAX和PHP,不发送数据,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我有一个奇怪的问题,我似乎无法解决 我试图做的是,在一个页面上调用jQuery函数,将该函数的参数发送到同一服务器上的另一个.php文件,让该php文件读取变量,然后将其插入数据库 函数触发器位于div上,如下所示: <div class="add_button" onclick="addImg('<?php echo $value[id]; ?>');"> function addImg(id) { $.ajax({ url:
<div class="add_button" onclick="addImg('<?php echo $value[id]; ?>');">
function addImg(id) {
$.ajax({
url: "addImgs.php",
type: "POST",
data: {"id" : id}
});
console.log("Function called with ID: " + id);
}
<?php
$id = $_REQUEST['id'];
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password, "DB_name");
$query = "INSERT INTO imgs (id) VALUES ($id)";
$result = $conn->query($query);
$conn->close();
?>
我在这里使用控制台进行了一些尝试和调试,并且正确执行了console.log()-函数。如果“url”不存在,日志还会给我一个错误500
最后,我的addImgs.php php代码如下所示:
<div class="add_button" onclick="addImg('<?php echo $value[id]; ?>');">
function addImg(id) {
$.ajax({
url: "addImgs.php",
type: "POST",
data: {"id" : id}
});
console.log("Function called with ID: " + id);
}
<?php
$id = $_REQUEST['id'];
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password, "DB_name");
$query = "INSERT INTO imgs (id) VALUES ($id)";
$result = $conn->query($query);
$conn->close();
?>
在其url的末尾,一个值“123”被添加到数据库中的表中
所以我的假设是,问题在于AJAX函数和PHP文件之间的连接
请帮助:)在您的问题中,您说变量名是
id
,但在实际的网站上,您提供的名称链接是img\u id
function addImg(id) {
$.ajax({
url: "http://projects.mn-web.dk/instafetcher/addImgs.php",
type: "POST",
data: {"img_id" : id}
});
console.log("Function called with ID: " + id);
}
您确定服务器端脚本也需要img\u id
?特别是,您确定在实际的PHP脚本中有以下行:
$id = $_REQUEST['img_id'];
而不是这个:
$id = $_REQUEST['id'];
还要注意,图像ID不是整数:
img_id="828281229958329915_2834748"
因此,请确保imgs
中id
的类型是varchar
或其他可以存储字符串的类型,而不是int
或bigint
更新:正如Ivan在评论中指出的,由于img_id
是一个字符串,而不是整数,因此您的INSERT
查询无效,需要将id括在引号中。一个简单的方法是:
$query=“插入imgs(id)值(\”“.mysqli\u real\u escape\u字符串($id)。”\”);
但更恰当的方法是使用事先准备好的声明:
查看浏览器开发工具网络中的实际请求以获取更多线索。发送的内容是否符合预期?什么是地位?路径是否符合预期等。这将有助于隔离服务器端和客户端问题。您能确切地告诉我怎么做吗?我以前从未真正用过这个。如果你想自己看一看,该功能的页面如下:点击键盘上的F12。。。。开始探索…查找网络选项卡。然后发出一个请求,并在结尾处看到它。我怀疑它调用了错误的URL。尝试使用绝对URL和test。正在发出状态为200的请求,但未返回任何内容…根据insert的状态发回一些内容还猜测您可能正在复制ID。。。db会接受吗?另外,如果ID是字符串,则必须在查询中引用它。