2011-12-15 40 views
9

Phải tôi đã đưa ra, sau khoảng 2 giờ cố gắng tìm ra vấn đề này tôi đã tiết lộ, giúp tôi ra stackoverflow!jQuery AJAX Đăng không đăng dữ liệu

Đang cố gắng để gửi một id sản phẩm cùng với số lượng vào một tập tin php rằng sẽ trở lại lỗi nếu nó tìm thấy bất kỳ mã

jQuery -

$('span.add_to_cart').click(function() { 
     $('div.cart').append('<span class="loading">LOADING</span>'); 
     $.ajax({ 
      type: "POST", 
      url: "/onlineshop/scripts/add_to_cart.php", 
      dataType: "json", 
      data: { prod_id: $('input.product_id').val(), 
        quantity: $('input.quantity').val() 
      }, 
      contentType: "application/json", 
      success: function(data) { 
       $('span.loading').remove(); 
      }, 
      error: function(xhr, textStatus, thrownError, data) { 
       alert("Error: " + thrownError); 
       $('span.loading').remove(); 
      } 
     }) 
    }); 

Và trang PHP tôi chỉ đang cố gắng print_r($_POST)

Dường như nó không đăng dữ liệu của tôi, tôi đã thử nhiều thứ khác nhau, tất cả đều cho tôi lỗi khi nói rằng không có dữ liệu nào được đăng.

+0

Bạn đã thử đăng dữ liệu mẫu chỉ thay vì đánh giá một biểu thức? Ít nhất sẽ giúp thu hẹp thủ phạm. ;-) –

+0

Khi bạn đang sử dụng POST, bạn nên sử dụng một số tiêu đề HTTP, contentType: "application/x-www-form-urlencoded". Nếu bạn không cung cấp tiêu đề này, dữ liệu của bạn sẽ không được gửi. Hãy thử thêm nó sau khi động từ POST. –

Trả lời

15

Hãy thử thay đổi contentType thành application/x-www-form-urlencoded hoặc chỉ thả nó vì đó là giá trị mặc định.

+0

Bingo! Tôi thấy câu trả lời tôi đã tìm kiếm! Cảm ơn một bó, đã dành 2 giờ chỉ đi, những gì heck là sai ở đây nó là loại gây phiền nhiễu để tìm thấy nó chỉ là điều đó. Oh well! Sẽ học trong tương lai! – Silenced

+0

điều này cũng làm việc hoàn hảo cho tôi ... Tôi đã sử dụng 'contentType:" application/json; charset = utf-8 "' để thay đổi thành 'contentType:" application/x-www-form-urlencoded "' ứng dụng với cuộc sống, cảm ơn vì đã chia sẻ thông tin hữu ích này – JasonDavis

+0

Điều này đã khắc phục sự cố cho tôi sau khi tự hỏi tại sao dữ liệu biểu mẫu của tôi không gửi hàng giờ. Bỏ nó không hoạt động. Tôi phải giải thích thêm 'application/x-www-form-urlencoded'. Tôi thực sự muốn tôi biết tại sao điều này là cần thiết. – Gavin

8

Vấn đề của bạn là dữ liệu bạn đang đăng không khớp với số content-type bạn đang gửi.

contentType là dành cho dữ liệu được gửi đến máy chủ và dataType là dành cho dữ liệu được nhận từ máy chủ.

Chỉ cần xóa contentType: "application/json" khỏi mã của bạn.

Các vấn đề liên quan