[英]Ajax send data using POST method, but PHP function does not INSERT them to the table
我在使用 POST 方法從 AJAX 接收數據時遇到問題。
起初,一切正常,但后來發生了一些事情,現在我找不到錯誤了。
如果我檢查我的 AJAX 一切都正確調度,但 PHP 沒有收到數據。 因此,它不會向數據庫表中插入數據。
我的jQuery:
$('#button-send-review').click(function(e) {
e.preventDefault();
var th = $(this);
var name = $("#name_review").val();
var good = $("#good_review").val();
var bad = $("#bad_review").val();
var comment = $("#comment_review").val();
var iid = $("#button-send-review").attr("iid");
var add_review = $("#button-send-review").val();
if (name != "") {
var name_review = '1';
$("#name_review").css("borderColor", "#DBDBDB");
} else {
var name_review = '0';
$("#name_review").css("border", "2px solid #d20000");
}
if (good != "") {
var good_review = '1';
$("#good_review").css("borderColor", "#DBDBDB");
} else {
var good_review = '0';
$("#good_review").css("border", "2px solid #d20000");
}
if (bad != "") {
var bad_review = '1';
$("#bad_review").css("borderColor", "#DBDBDB");
} else {
var bad_review = '0';
$("#bad_review").css("border", "2px solid #d20000");
}
if (name_review == '1' && good_review == '1' && bad_review == '1') {
$.ajax({
type: "POST",
url: "./",
data: "goods_id=" + iid + "&name=" + name + "&good=" + good + "&bad=" + bad + "&comment=" + comment + "&add_review=" + add_review,
dataType: "html",
cache: false,
}).done(function() {
$(".success").addClass("visible");
setTimeout(function() {
// Done Functions
th.trigger("reset");
$(".success").removeClass("visible");
$.magnificPopup.close();
}, 3000);
});
}
});
我的控制器:
<?php
if ($_POST['add_review']) {
add_review();
}
?>
我的型號:
<?php
function add_review() {
global $link;
$goods_id = trim($_POST['goods_id']);
$name = trim($_POST['name']);
$good = trim($_POST['good']);
$bad = trim($_POST['bad']);
$comment = trim($_POST['comment']);
$goods_id = clear($goods_id);
$name = clear($name);
$good = clear($good);
$bad = clear($bad);
$comment = clear($comment);
$query = "INSERT INTO reviews(goods_id, name, good_reviews, bad_reviews, comment, date)
VALUES($goods_id, '$name', '$good', '$bad', '$comment', NOW())";
$res = mysqli_query($link, $query) or trigger_error($link->error . "[DB]");
return true;
}
?>
我的 HTML:
<div id="send-review" class="popup-form">
<div class="success">Thank you! <br>
Your review send for moderation.
</div>
<h4 id="title-review">The review would be posted soon.</h4>
<ul>
<li>
<label id="label-name"><span>Name *</span></label>
<input maxlength="15" type="text" id="name_review" placeholder="Enter your name..." style="border-color: rgb(219, 219, 219);" />
</li>
<li>
<label id="label-good"><span>Pros *</span></label>
<textarea id="good_review" placeholder="Enter pros..." style="border-color: rgb(219, 219, 219);"></textarea>
</li>
<li>
<label id="label-bad"><span>Cons *</span></label>
<textarea id="bad_review" placeholder="Enter cons..." style="border-color: rgb(219, 219, 219);"></textarea>
</li>
<li>
<label id="label-comment">Comment</label>
<textarea id="comment_review" placeholder="Your comment..."></textarea>
</li>
</ul>
<div class="button-wrap">
<button class="button" type="submit" id="button-send-review" name="add_review" value="Send" iid="92">Send</button>
</div>
<button title="Close (Esc)" type="button" class="mfp-close">×</button>
</div>
您的 $.ajax() 數據格式不正確;
應該像這個例子一樣在你的接收器頁面中接收 POST 字符串:
$.ajax({
method: "POST",
url: "some.php",
data: { name: "John", location: "Boston" }
});
並且請使用准備好的 SQL 語句來防止 SQL 注入。
ajax方法中的發帖格式不正確;
將ajax代碼更改為:
<script>
$('#button-send-review').click(function (e) {
e.preventDefault();
var th = $(this);
var name = $("#name_review").val();
var good = $("#good_review").val();
var bad = $("#bad_review").val();
var comment = $("#comment_review").val();
var iid = $("#button-send-review").attr("iid");
var add_review = $("#button-send-review").val();
if (name != "")
{
var name_review = '1';
$("#name_review").css("borderColor", "#DBDBDB");
} else {
var name_review = '0';
$("#name_review").css("border", "2px solid #d20000");
}
if (good != "")
{
var good_review = '1';
$("#good_review").css("borderColor", "#DBDBDB");
} else {
var good_review = '0';
$("#good_review").css("border", "2px solid #d20000");
}
if (bad != "")
{
var bad_review = '1';
$("#bad_review").css("borderColor", "#DBDBDB");
} else {
var bad_review = '0';
$("#bad_review").css("border", "2px solid #d20000");
}
if (name_review == '1' && good_review == '1' && bad_review == '1')
{
$.ajax({
type: "POST",
url: "./",
data: {"goods_id":iid,"name":name,"good":good,"bad":bad, "comment":comment,"add_review":add_review},
dataType: "html",
cache: false,
}).done(function () {
$(".success").addClass("visible");
setTimeout(function () {
// Done Functions
th.trigger("reset");
$(".success").removeClass("visible");
$.magnificPopup.close();
}, 3000);
});
}
});
</script>
使用PDO停止 SQL 注入
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.