AJAX和PHP,不会发送数据

时间:2015-09-30 00:49:13

标签: javascript php jquery mysql ajax

我有一个奇怪的问题,我似乎无法解决。

我想做的是在一个页面上调用jQuery函数,将该函数的参数发送到同一服务器上的另一个.php文件,让该php文件读取变量,然后将其插入数据库。

函数触发器放在div上,如下所示:

<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);
}

我正在使用控制台在这里尝试调试一下,并且console.log() - 函数正在正确执行。如果“url”不存在,日志也会给我一个错误500。

最后,我的addImgs.php的php代码如下所示:

<?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();

?>

这个.php文件工作得很好,如果我添加

?id=123

到它的url的末尾,并且值“123”被添加到数据库中的表中。

所以我的假设是问题是AJAX函数和PHP文件之间的连接。

请帮助:)

1 个答案:

答案 0 :(得分:2)

在您的问题中,您说变量名称为id,但在实际网站上,您提供的名称链接为img_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_id吗?特别是,您确定在实际的PHP脚本中有这一行:

$id = $_REQUEST['img_id'];

而不是这个:

$id = $_REQUEST['id'];

另请注意,您的图片ID不是整数:

img_id="828281229958329915_2834748"

因此,请确保idimgs的类型为varchar或其他可存储字符串的内容,而不是intbigint。< / p>

更新:正如Ivan在评论中指出的那样,由于img_id是一个字符串而不是整数,因此INSERT查询无效,需要将id括在引号中。一种简单的方法是:

$query = "INSERT INTO imgs (id) VALUES (\"".mysqli_real_escape_string($id)."\")";

但更恰当的方法是使用准备好的陈述:

http://php.net/manual/en/mysqli.prepare.php