jquery post check json响应

时间:2015-03-30 11:18:22

标签: php jquery json

有一个脚本将产品添加到购物车会话中,而php正在将响应返回给jquery post函数。问题是我无法检查返回的响应以运行某些动画。

我的jquery代码是:

var product = {
            action: 'shs_add_to_cart',
            'nonce': wp_nonce_value,
            'product': product_id,
            'title': product_title,
            'qty': quantity.val()
        };

        $.post(
          shsAjaxURL.ajaxurl, product,
          function(status) {
            var response = $.parseJSON(status);

            console.log('response');

            if(response == 'success') {
              message.find('p').text('Item added to cart');
              message.fadeIn(300);
              message.delay(2500).fadeOut(300);
            }
            else {
              message.find('p').text('Could not add to cart');
              message.fadeIn(300);
              message.delay(2500).fadeOut(300);
            }

        });

PHP代码正常工作,因为它将值添加到会话购物车

 $_SESSION['cart_items'] = array(
                array(
                    'item_id'   => $product,
                    'item_name' => $title,
                    'item_qty'  => $qty
                )
        );

        header('Content-Type: application/json');
        echo json_encode('success');
        wp_die();

我得到以下回复

"success"

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

使用dataType json更改您的ajax,如下所示:

$.ajax({
      url:shsAjaxURL.ajaxurl,
      data: product,  
      dataType: 'json',
      type: 'post',
      success:function(data) {
         console.log(data.success);
      }
   });

然后在你的PHP代码中:

$_SESSION['cart_items'] = array(
                array(
                    'item_id'   => $product,
                    'item_name' => $title,
                    'item_qty'  => $qty
                )
        );
        $data['success'] = "success";
        echo json_encode($data);