错误:JSON.parse:JSON数据的第1行第1列的意外数据结束

时间:2017-11-21 18:36:07

标签: php jquery json

我在下面使用了以下代码,用于将产品添加到购物车,但每次我将产品添加到购物车时,产品都会添加到购物车中,但我收到错误:意外结束第一行第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&ccedil;&atilde;o em psicofarmacologia na inf&acirc;ncia e adolesc&ecirc;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}

坦克你!

2 个答案:

答案 0 :(得分:1)

您告诉您的ajax调用期望 1.xxxxxxx 0.000000R 作为响应的数据类型。然后,您在PHP脚本中创建HTML,并在输出它作为对ajax请求的响应之前对其进行json编码。

可能出现什么问题?

答案 1 :(得分:0)

我建议不要在您的json响应中将HTML存储为值。

在您的AJAX请求中尝试:

dataType: 'json',