【问题标题】:PHP file from .ajax call not inserting data into database.ajax 调用中的 PHP 文件未将数据插入数据库
【发布时间】:2013-07-03 03:55:45
【问题描述】:

我对 PHP 还很陌生,而且我以前从未做过 AJAX - 我决定使用 Jquery .ajax 函数,因为它比 .post 具有更多的自定义功能,而且我喜欢它的简洁性而不是常规的 javascript。

这里是ajax代码

    $("#upvotearrow").click(function() {
    var dataString="vote=upvote";
    $.ajax({
        type: "POST",
        url: "../secure/process_upvotedownvote.php",
        data: dataString
    })
    .done(function() {
        alert("Upvote registered!");
    });
});

到目前为止,外部 PHP 文件是这样的:

include "db_connect.php";
include "functions.php";


    if(isset($_POST['vote']) && !empty($_POST['vote'])) {
        $poemid=7;
        $typeofvote = $_POST['vote'];
        if ($typeofvote=="upvote") {
            if ($insert_stmt = $mysqli->prepare("UPDATE poems SET poem_upvotes=poem_upvotes+1 WHERE poem_id=?")) { //Prepare SQL statement
                $insert_stmt->bind_param('i',$poemid); //Bind parameters
                $insert_stmt->execute();// Execute the prepared query.
            }
        }
   }

$mysqli 变量很好,当我在数据库中键入它时查询就可以工作,所以我的问题本质上是我是否正确地将数据从 AJAX 传输到 PHP。

还有一个附带问题——我调用的 PHP 文件是否可以从进行 AJAX 调用的页面的 URL 访问变量? (即 url 是 http://website.com/poem_id=7 并且我想访问 poem_id 值?

【问题讨论】:

  • 例如,您可以使用$_GET['poem_id'] 访问poem_id$poem_id = $_GET['poem_id'];
  • PHP 中的部分也是 ` if(isset($_POST['vote']) && !empty($_POST['vote'])) {` 很好,或者应该只是 $_GET['vote'] 而不是 $_POST?
  • URL 中? 之后的参数将在$_GET 中,$.ajaxdata: 选项中的参数将在$_POST 中。您也可以使用$_REQUEST,它将两者结合起来。
  • 你有没有调试检查哪些值被传递到你的 php 页面?即使你的 if 条件有效?
  • 我只是将 .ajax 函数中的 URL 参数更改为“secure/process_upvotedownvote.php”,Firebug 没有报告任何错误,该函数仍然无法正常工作——.即使 URL 错误,也会启动 done。我不太确定该怎么做——任何方向都会非常有帮助。

标签: php jquery mysql ajax post


【解决方案1】:

在 db 插入文件中执行 print_r($_POST) 并查看是否获得了所有具有正确名称的变量。根据代码,您应该得到。

此外,您可以传递使用普通 url 执行的任何参数,唯一的区别是它将使用 AJAX 调用。

【讨论】:

    【解决方案2】:

    感谢大家的回复-

    我发现 Firebug 不显示外部 PHP 文件的错误报告,但 Safari 会在开发者工具的 XHRs 文件中回显变量-

    然后我创建了一个隐藏的输入字段,其中包含poem_id 数据,检查它在服务器端是否有效,然后执行脚本。我还修复了导致程序关闭的语法错误。

    再次感谢您的回复 - 通过制作我的网站以及如何利用它的强大功能,我学到了很多关于 AJAX 的知识。

    【讨论】:

      【解决方案3】:

      尝试改变dataString变量的值
      var dataString = {vote:upvote};

      【讨论】:

        猜你喜欢
        • 2021-07-20
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-07
        相关资源
        最近更新 更多