【问题标题】:php post displays empty message and no outputphp post显示空消息并且没有输出
【发布时间】:2014-09-26 13:49:55
【问题描述】:

我正在尝试发送一组变量并使用 PDO 插入到我的数据库中,但是当我运行该页面时,我得到一个空消息框并且页面上没有发生任何事情。

这就是我获取用户输入的方式。

<div class="caption1" contentEditable ="plaintext-only" id="edit1a">
        <P> COMPANY ON AMAZON WANTS YOU TO TEST </BR> AND REVIEW IT’S PRODUCT!</P> 

index.html

<button id="save">Click to Save</button> 

<script type="text/javascript">
        $(document).ready(function(argument) {
            $('#save').click(function(){
                // Get edit field value
                $edit1a = $('#edit1a').html();
                $edit2a = $('#edit2a').html();
                $edit3a = $('#edit3a').html();
                $edit4a = $('#edit4a').html();
                $edit5a = $('#edit5a').html();
                $edit6a = $('#edit6a').html();
                $edit7a = $('#edit7a').html();
                $edit8a = $('#edit8a').html();
                $edit9a = $('#edit9a').html();
                $edit10a = $('#edit10a').html();
                $edit11a = $('#edit11a').html();
                $.ajax({
                    url: 'get.php',
                    type: 'post',
                    data: {edit1: $edit1a, edit2: $edit2a, edit3: $edit3a, edit4: $edit4a, edit5: $edit5a, edit6: $edit6a, edit7: $edit7a, edit8: $edit8a, edit9: $edit9a, edit10: $edit10a, edit11: $edit11a,},
                    datatype: 'html',
                    success: function(rsp){
                            alert(rsp);
                        }
                });
            });
        });
    </script>

get.php

<?php
//configuration

$host = "localhost";
$name = "lpages";
$user = "root";
$pass = "****";

//connection
$odb = new PDO("mysql:host=".$host.";dbname=".$name,$user,$pass);

//new data
if(isset($_POST['edit1a'])){
$edit1 = $_POST['edit1a'];
$edit2 = $_POST['edit2a'];
$edit3 = $_POST['edit3a'];
$edit4 = $_POST['edit4a'];
$edit5 = $_POST['edit5a'];
$edit6 = $_POST['edit6a'];
$edit7 = $_POST['edit7a'];
$edit8 = $_POST['edit8a'];
$edit9 = $_POST['edit9a'];
$edit10 = $_POST['edit10a'];
$edit11 = $_POST['edit11a'];
$q      = "INSERT INTO webpages1(edit1, edit2, edit3, edit4, edit5, edit6, edit7, edit8,     edit9, edit10, edit11) 
            values (:edit1, :edit2, :edit3, :edit4, :edit5, :edit6, :edit7, :edit8,     :edit9, :edit10, :edit11);";
            $query = $odb->prepare($q);
            $results = $query->execute(array(
                  ":edit1"=>$edit1,
                  ":edit2"=>$edit2,
              ":edit3"=>$edit3,
              ":edit4"=>$edit4,
              ":edit5"=>$edit5,
              ":edit6"=>$edit6,
              ":edit7"=>$edit7,
              ":edit8"=>$edit8,
              ":edit9"=>$edit9,
              ":edit10"=>$edit10,
              ":edit11"=>$edit11
              ));
        }
        ?>

我对使用 PDO 还很陌生,所以我可能遇到了格式问题

【问题讨论】:

  • 您的 php 没有输出任何类型的响应。您的 js 也可能有错误(如果这些字段是表单元素,您将在表单元素上使用 .val() 而不是 .html(),或者更好的是 .serialize()
  • 最终,如果您为表单显示了一些 html 标记,您将获得更好的问题答案
  • 它可能是变量,我让它工作只是使用这种方法传递 1 个变量,但我也只使用基本的 msql php。此外,这些值不是以表单形式提交的,我使用 ajax 将变量发送到 get.php。
  • 我添加了一行我如何获取用户输入的内容。它是存储到 ID 的 contentEditable 字段。

标签: javascript php pdo


【解决方案1】:

我认为您的 POST 密钥不匹配。

你正在发送

{edit1: $edit1a, edit2: $edit2a,....

但是在 PHP 中你会检索到:

$edit1 = $_POST['edit1a'];

应该是edit1edit2等等……


但最重要的是要知道如何调试:

$odb = new PDO("mysql:host=".$host.";dbname=".$name,$user,$pass);
$odb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

否则你一无所知。您还可以使用 $result 值添加更多逻辑。

例如:

if(!$results){
   var_dump($query->error());
   exit();
}

至于未定义的值,如果开启报错,PHP可以告诉你:

error_reporting(E_ALL);
ini_set('display_errors', '1');

当然不要忘记将响应发送回 ajax 回调以确定成功。

【讨论】:

  • {edit1: $edit1a, edit2: $edit2a,....宾果游戏!我改变了一些其他的东西,但不知道为什么我错过了这个。谢谢
【解决方案2】:

嗯,首先,您没有在 PHP 中回显任何内容。尝试添加:

echo "success";

在您的 PHP 文件的末尾。然后在你的JS中,你可以检查:

if (rsp == "success") {
    alert("Success inserting into database!");
}

【讨论】:

  • 那么这个函数应该只是在数据库中插入数据。索引页面上的保存按钮甚至不重定向页面,只是使用ajax发送数据
  • $query->execute 执行查询不是这样吗?
  • 你是对的 Rossco,我错过了,哎呀。我会编辑。
  • @amazingacademy 如果您希望在警报中显示某些内容,则需要从 php 发送响应
  • 注意,现在我只是在谷歌中使用调试器。一旦我开始使用 PDO 方法,什么都没有发生
猜你喜欢
  • 2017-11-24
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 2021-08-18
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
相关资源
最近更新 更多