无法使用 ajax 将 php 文件插入数据库

Posted

技术标签:

【中文标题】无法使用 ajax 将 php 文件插入数据库【英文标题】:Can't get php file to insert into database using ajax 【发布时间】:2021-07-20 07:57:16 【问题描述】:

我对 ajax 和 php 很陌生。我一直在尝试将在动态生成的 js 表中找到的文本插入到数据库中,但我无法让它工作。

我的主要问题是我让它在数据库中的不同表上工作,来自网站的不同页面。

<button id="saveScorecard">Save Scorecard</button>

上面触发了下面的js事件。

$(document).ready(function() 
console.log("document loaded");
    $('#saveScorecard').click(function() 
        //Get value of item name
        var place_1 = $("#scorecard table tbody #tr0 td:first-child").html();
        console.log($("#scorecard table tbody #tr0 td:first-child").html());
        var place_2 = $("#scorecard table tbody #tr1 td:first-child").html();
        var place_3 = $("#scorecard table tbody #tr2 td:first-child").html();;
        var user_id = 1;
        
        $('#saveScorecard').prop("disabled", true);

        request = $.ajax(
            url: "ajax/upload.php",
            type: "post",
            data: place1 : place_1, 
                   place2 : place_2, 
                   place3 : place_3, 
                   userid : 1
            
        );
        console.log("sent data to php file");

        request.always(function () 
            $('#saveScorecard').prop("disabled", false);
        );

    );
    
);

上传.php:

<?php

require_once('../includes/db.php');


if($_POST['place_1_name'] && $_POST['place_2_name'] && $_POST['place_3_name'])


   $query = "INSERT INTO scorecards (place_1_name, place_2_name, place_3_name, user_id) 
   
   VALUES 
   (:place_1, :place_2, :place_3, :user_id)";
   
   $result = $DBH->prepare($query);
   $result->bindParam(':place_1', $_POST['place1']);
   $result->bindParam(':place_2', $_POST['place2']);
   $result->bindParam(':place_3', $_POST['place3']);
   $result->bindParam(':user_id', $_POST['userid']);

   $result->execute();
   echo $DBH->lastInsertId();


?> 

如果有帮助,该网站将通过 plesk 托管。

请忽略所有表格单元格的混乱和单独定义,我一直致力于在整理之前尝试让它工作。

此外,有关 php 调试的任何提示都会很棒,因为有时错误不会记录在控制台或错误日志中。

感谢您的帮助!

【问题讨论】:

if($_POST['place_1_name'] -- 你不是从javascript发送place_1_name,而是place1place2place3相同) 谢谢!事实证明,我在最后改变了它,我想在我的测试过程中,我从一个问题转到另一个问题,直到它只是错误的变量名,现在肯定是在捂脸。 (我对这个网站真的很不好,但我认为你需要提交它作为我接受它的答案?) 认为您可以在这种情况下删除问题,因为这是一个错字而不是编码问题。 @user3783243 他们用来在***上写下问题的宝贵时间怎么样。 我将“答案”作为评论发布的原因是为了帮助 OP 快速解决问题。但我仍然投票结束这是一个错字。 【参考方案1】:

印刷错误

您的条件是检查您从未发送过的数据。

在您的 upload.php 文件中,您正在检查条件...

if($_POST['place_1_name'] && $_POST['place_2_name'] && $_POST['place_3_name'])

    //your codes

但是您使用 ajax 发送数据是...

data:  place1 : place_1, 
        place2 : place_2, 
        place3 : place_3, 
        userid : 1

您必须从 JQuery 或 PHP 更改密钥来解决 问题。

一旦您将密钥更改为您要发送的内容,您的问题就会得到解决

例如:

if($_POST['place1'] && $_POST['place2'] && $_POST['place3'])

    //your codes

【讨论】:

以上是关于无法使用 ajax 将 php 文件插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 和 Ajax 创建动态表以将数据插入表中,如果不在视图或第一页中,则无法使用按钮

Ajax 无法正常工作。 PHP 无法在 SQL 中插入数据

如何使用 php jquery ajax 上传文件和插入数据

使用ajax和php将数据插入postgresql数据库

无法使用 Php 和 jquery ajax 在 mysql 中插入 FormData

Ajax 使用 POST 方法发送数据,但 PHP 函数不会将它们插入到表中