【发布时间】: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