【问题标题】:XMLHttpRequest not getting response after inserting in MySQL using PHP使用 PHP 插入 MySQL 后 XMLHttpRequest 没有得到响应
【发布时间】:2018-03-27 08:46:20
【问题描述】:

我上网了很多,我也尝试了所有的可能性来完成这项工作,但仍然无法正常工作。我正在做的是,尝试使用 XMLHttpRequest 插入产品类别,如果记录插入成功,它应该返回 true 作为响应,否则返回 false 作为响应。

首页:

    <form id="form_validation" method="POST"  onsubmit="InsertCategory()">
                                <div class="form-group form-float">
                                    <div class="form-line">
                                        <input type="text" class="form-control" name="category_name" id="category_name" required>
                                        <label class="form-label">Category Name</label>
                                    </div>
                                </div>
                                <button class="btn btn-primary waves-effect" type="submit" name="submit">SUBMIT</button>
                            </form>
<script>

        function InsertCategory()
        {
            var category_name=document.getElementById("category_name").value;
            var operation="insert";
            var url = "includes/ajax/category_master/categoryOperations.php";
            //var url = "includes/ajax/getDocuments.php";
            var params = "category_name="+category_name+"&operation="+operation;
            var http = new XMLHttpRequest();
            http.onreadystatechange = function()
             {
                console.log("rs "+http.response);
                console.log(http.readyState);
                console.log(http.status);
                if(http.readyState == 4 && http.status == 200) 
                {


                }
            }
            http.open("POST", url, true);
            http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            http.send(params);
        }
    </script>

这里是分类操作页面

    <?php include_once("connection.php");
$operation=$_POST["operation"];
switch($operation)
{
    case "insert":
        $category_name=$_POST["category_name"];
        $query="insert into product_category(category_name)values(:category_name)";
        $stmt=$con->prepare($query);
        $stmt->bindParam(":category_name",$category_name);
        if($stmt->execute())
        {
            echo "true";
        }
        else
        {
            echo "false";
        }
    break;
    case "update":
    break;
    case "delete":
    break;
}
?>

这里发生的情况是,所有代码都可以正常工作,类别插入到 product_category 表中,但我无法接收 true 作为响应。 如果我在 categoryOperations 页面中评论 $stmt->execute() 并回显 true 那么它工作正常,在控制台上我得到 true。但如果执行查询,它不会返回任何内容。 我无法理解代码的这种行为。

【问题讨论】:

  • 浏览器开发者工具中的网络标签显示什么?你得到回应了吗?它的状态如何?服务器日志中是否报告了任何错误?您是否已将 PHP 错误报告调到了最高水平?
  • 网络选项卡中没有任何错误,它显示状态 200。没有,正如我所提到的,如果我执行 stmt->execute() 我没有得到任何响应。在服务器访问日志上,我得到了这个 ::1 - - [27/Mar/2018:14:32:13 +0530] "POST /Aroj/category_master.php HTTP/1.1" 200 19907 ::1 - - [27/Mar/2018:14:32:13 +0530]“POST /Aroj/includes/ajax/category_master/categoryOperations.php HTTP/1.1”200 4
  • " 它显示状态 200。不,正如我所提到的,如果我执行 stmt->execute() 我没有得到任何响应" — 您无法得到 200 OK 响应并且在同一时间!
  • 您是否尝试查看是否设置了 $category_name ?或者如果查询出现错误?回声$stmt->错误; ?
  • 如果您没有收到任何消息,您确定设置了 $operation 吗? print_r($_POST) ?

标签: php ajax xmlhttprequest


【解决方案1】:

得到解决方案 问题是,我已经写了

<form id="form_validation" method="POST"  onsubmit="InsertCategory()">

那是发送两个请求。使用表单以及来自 xmlhttprequest。 我刚刚删除了&lt;form&gt; 标签并在提交按钮上调用了 InsertCateory()

<button class="btn btn-primary waves-effect" type="submit" onClick="InsertCategory()" name="submit">SUBMIT</button>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    相关资源
    最近更新 更多