【问题标题】:Unable to post value on a php file when query is completed查询完成后无法在 php 文件上发布值
【发布时间】:2020-05-04 05:17:40
【问题描述】:

我在 footer.php 文件中使用 ajax 调用:

$.ajax({
            type: "POST",
            url: "try.php?action=loginSignup",
            data: "email=" + $("#email").val() + "&password=" + $("#password").val() + "&loginActive=" + $("#loginActive").val(),

            success: function(result) {
                    alert(result);
            }  
        })  

在 try.php 文件中,当插入新行完成时,我试图回显 hello 的值:

<?php

        if($_POST['loginActive']=='1'){

            $error="";


            $query = "SELECT * FROM users WHERE email = '". mysqli_real_escape_string($link, $_POST['email'])."' LIMIT 1";

            // echo $query;
            $result = mysqli_query($link, $query);
            if (mysqli_num_rows($result) > 0){
                $error = "That email address is already taken.";
            }

            if($error!=""){
                echo $error;
            }
            else{

                $query = "INSERT INTO users (`email`, `password`) VALUES ('". mysqli_real_escape_string($link, $_POST['email'])."', '". mysqli_real_escape_string($link, $_POST['password'])."')";

////This is the part where I am facing issues
                if(mysqli_query($link,$query)){
                    echo "hello";
////anything echoed here is not getting alerted by browser, but the query still runs successfully and the new row is being added to my database.

                }
                else{
                    echo "query couldn't be answered";
                }

            }
        }

?>  

当我运行包含 footer.php 的 index.php 文件时,页面不会提醒任何值,但是会根据查询在我的数据库中创建新行。我尝试了所有方法,但无法弄清楚为什么当查询成功完成时浏览器没有提醒我的“你好”消息。此外,我使用不同的简单 SELECT 查询进行了尝试,并且“hello”消息被警告,没有任何问题。我猜 INSERT 查询是这里造成问题的原因。任何帮助将非常感激。

【问题讨论】:

  • 您的数据是否已插入数据库?
  • 是的,它被插入了。
  • 我认为你最后多了一个粗括号}
  • 不,我刚刚检查过了。很好……这是第一个if条件。
  • 您尝试过什么调试问题?所有数据都按预期到达服务器吗?此外,请不要使用不安全的 INSERT 查询,准备好的语句可以帮助您提供更多的安全性来防止 SQL 注入

标签: php mysql


【解决方案1】:

在调用 ajax 函数之前,您应该获取数据,然后将数据以正确的格式发送到服务器。看看这是否对您有帮助。 ↓↓

// get the value from input fields
var email       =  $("#email").val();
var password    =  $("#password").val();
var loginActive = +$("#loginActive").val();
$.ajax({
    type: "POST",
    url: "try.php?action=loginSignup",
    // the correct format to send the data
    data: {'email': email, 'password': password, 'loginActive': loginAcitve},
    success: function(result) {
                 alert(result);
             }  
})  

【讨论】:

  • 我已经添加了所有需要执行的更改的所有解释。请澄清我需要添加的更多信息,我会这样做。 ::)
  • 您还没有解释为什么这会有所作为。根据问题,INSERT 查询工作正常,但输出未按预期完成。据我阅读您的答案,您专注于更改请求本身。还是改变它也会修改输出?
猜你喜欢
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多