我再次检查并检查,但由于我已经进入jQuery和JSON几天,我看不到任何错误(但浏览器的控制台确实如此)。
AJAX调用返回error:
函数,在控制台日志Mmm..try again
中打印。
整个剧本的目标是:
codeID
,title
和qta
(数量)(这可行)将收集的信息传递给PHP脚本(使用AJAX),该脚本应该:
a)在function addToCartCookie()
创建一个包含检索到的信息的数组$array
并将其保存在名为addedToCart
的 JSON格式的Cookie中。
b)在function checkAddToCartCookie()
中执行简单检查是否设置了cookie。如果是,则必须将字符串" Cookie SET"发送回HTML页面,否则" Cookie NOT SET"。
正如我所说,问题出在$.ajax
来电,因为它返回error:
,但我不知道为什么。有没有更专家的任何线索?
您可以测试脚本here。
这里有代码:
HTML部分:
<div id="pC_prodImg">
</div>
<div id="pC_prodInfo">
<p id="pC_prodInfoA">Questo è il titolo</p>
<p class="pC_prodInfoB"></p>
<p id="pC_prodInfoC"></p>
<form id="pC_prodInfoForm">
<select name="pC_prodInfoSelect" id="pC_prodInfoSelect">
<option value="FC120P1">1 mq² (€ 20.50)</option>
<option value="FC120P5">5 mq² (€ 40.50)</option>
</select>
<input type="number" id="pC_prodInfoQta" name="pC_prodInfoQta" maxlength="2" min="1" max="99" required="required" placeholder="Q.tà"/>
<input type="submit" value="Aggiungi al carrello" id="pC_prodInfoSubmit" />
</form>
</div>
jQuery的:
<script>
$(document).ready(function() {
$("#pC_prodInfoSubmit").on("click", function(){
var title = $("#pC_prodInfoA").text();
var codeID = $("#pC_prodInfoSelect").val();
var qta = $("#pC_prodInfoQta").val();
if($.isEmptyObject(qta)) {
alert("Imposta una quantità numerica!");
}
else {
$("#pC_prodImg").html(title + ' | ' + codeID + ' | ' + qta);
$.ajax({
type: "POST",
url: "addtocart.php",
data: { title:title, codeID:codeID, qta:qta },
dataType: "json",
success: function(data) {
if(data == "Cookie SET") {
console.log(data);
}
else {
console.log("Error 1");
}
},
error: function() {
console.log("Mmm..try again");
}
});
}
});
});
</script>
PHP脚本:
<?php
header('Content-Type: application/json');
$title = $_POST["title"];
$codeID = $_POST["codeID"];
$qta = $_POST["qta"];
function addToCartCookie($title, $codeID, $qta) {
$array = array("title" => $title,
"codeID" => $codeID,
"qta" => $qta);
$arrayJSON = json_encode($array);
setcookie("addedToCart", $arrayJSON, time() + (86400 * 30), "/");
}
function checkAddToCartCookie() {
$addedToCart = json_decode($_COOKIE["addedToCart"], true);
if (empty($addedToCart)) {
$response = "Cookie NOT SET";
echo json_encode($response);
}
else {
$response = "Cookie SET";
echo json_encode($response);
}
}
addToCartCookie($title, $codeID, $qta);
checkAddToCartCookie();
[编辑] :问题是由<form>
标记造成的:我评论了它,整个脚本都有效,其他没有。在这种情况下,这不是问题,但如果有人知道原因可以请向我解释一下吗?谢谢!