我在下面使用了以下代码,用于将产品添加到购物车,但每次我将产品添加到购物车时,产品都会添加到购物车中,但我收到错误:意外结束第一行第1列的数据显示在Firefox中。 现在在chrome中,我收到错误:未捕获的SyntaxError:在Object.success的JSON.parse()中JSON输入的意外结束
我已经尝试过使用console.log但是php并没有向我返回任何错误。我尝试了几种解决方案,但我无法解决它们,所以我来这里寻求帮助。
jQuery的:
$(document).ready(function () {
//add a product in the cart
$('#add-to-cart').click(function () {
$("#addtocartform").submit(function(e) {
var prod_id = $("#add-to-cart").data("id");
var prod_mode = $("input[name=course_mode]:checked").val();
$.ajax
({
url: '/cart/add',
type: 'POST',
data: jQuery.param({ prod_id: prod_id, prod_mode: prod_mode}),
dataType: 'text',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function (data) {
//console.log(data);
var frontend_cart_result = JSON.parse(data);
$('#dropdowncart').html( frontend_cart_result['cart_li'] );
$('.badge').text( frontend_cart_result['cart_item_quantity'] );
$(location).attr('href', '/checkout');
},
error: function () {
alert("error");
}
});
e.preventDefault(); // avoid to execute the actual submit of the form.
});
});
})
PHP:路径/购物车/添加
public function add() {
//session_destroy();
//$_SESSION['cart'][0]['id'] = 'teste';
$cart_go = true;
if (!empty($_SESSION['cart'])) {
foreach ($_SESSION['cart'] as $valor) {
if ($valor['id'] == $_POST['prod_id']) {
$cart_go = false;
}
}
}
if ($cart_go) {
$db = new productModel();
//check if product has already been added
if (!empty($_SESSION['cart'])) {
$next_key = max(array_keys($_SESSION['cart']));
$next_key++;
} else {
$next_key = 0;
}
$_SESSION['cart'][$next_key] = $db->selecionaproduto(array("prod_id" => $_POST['prod_id']));
//add all the products filds in session
//bought the online course
if ($_POST['prod_mode'] == 1) {
$_SESSION['cart'][$next_key]['classroom_price'] = '';
}
//bought the classroom course
if ($_POST['prod_mode'] == 2) {
$_SESSION['cart'][$next_key]['online_price'] = '';
}
$frontend_cart = '';
foreach ($_SESSION['cart'] as $valor2) {
$frontend_cart = $frontend_cart . '<li>
<span class="item">
<span class="item-left">
<img src="/web-files/img/course/' . $valor2['id'] . '/' . $valor2['top_nav_cart_thumbnail'] . '" alt="">
<img src="/web-files/img/course/' . $valor2['id'] . '/' . $valor2['top_nav_cart_thumbnail'] . '" alt="">
<span class="item-info">
<span>' . $valor2['name'] . '</span>
<span><strong>R$ ' . number_format($valor2['online_price'] . $valor2['classroom_price'], 2, ',', '.') . '</strong></span>
</span>
</span>
<span class="item-right">
<button data-id="' . $valor2['id'] . '" class="btn btn-xs btn-danger pull-right delete-cart-item">x</button>
</span>
</span>
</li>';
}
$frontend_cart = $frontend_cart . '<li class="divider"></li>
<li><a class="text-center" href="/checkout">Cart</a></li>
<li class="divider"></li>
<li><a class="text-center" href="/checkout">Checkout</a></li>';
$frontend_cart_result = array(
"cart_li" => $frontend_cart,
"cart_item_quantity" => count($_SESSION['cart'])
);
echo json_encode($frontend_cart_result);
}
}
这是console.log
{"cart_li":"<li>\r\n <span class=\"item\">\r\n <span class=\"item-left\">\r\n <img src=\"\/web-files\/img\/curso\/1\/psicofarmacologia-na-infancia-e-adolescencia-top-nav-cart.jpg\" alt=\"\">\r\n <span class=\"item-info\">\r\n <span>Curso de atualização em psicofarmacologia na infância e adolescência<\/span>\r\n <span><strong>R$ 999,00<\/strong><\/span>\r\n <\/span>\r\n <\/span>\r\n <span class=\"item-right\">\r\n <button data-id=\"1\" class=\"btn btn-xs btn-danger pull-right delete-cart-item\">x<\/button>\r\n <\/span>\r\n <\/span>\r\n <\/li><li class=\"divider\"><\/li>\r\n <li><a class=\"text-center\" href=\"\/checkout\">Cart<\/a><\/li>\r\n <li class=\"divider\"><\/li>\r\n <li><a class=\"text-center\" href=\"\/checkout\">Checkout<\/a><\/li>","cart_item_quantity":1}
坦克你!
答案 0 :(得分:1)
您告诉您的ajax调用期望 1.xxxxxxx
0.000000R
作为响应的数据类型。然后,您在PHP脚本中创建HTML,并在输出它作为对ajax请求的响应之前对其进行json编码。
可能出现什么问题?
答案 1 :(得分:0)
我建议不要在您的json响应中将HTML存储为值。
在您的AJAX请求中尝试:
dataType: 'json',