2012-05-07 50 views
7

thành thật mà nói, tôi là người mới bắt đầu với jQuery và bây giờ tôi đang bị kẹt. Tôi muốn gửi dữ liệu từ biểu mẫu HTML của tôi sang một php, nó thêm dữ liệu vào cơ sở dữ liệu và trả về một số giá trị mà tôi muốn hiển thị trên HTML ban đầu của tôi. Dưới đây là mã của tôi:Chức năng jQuery ajax trả về lỗi

$.ajax({ 
    type: "POST", 
    url: "http://mysite.com/process.php", 
    data: { data: mydata }, 
    cache: false, 
    dataType: "text", 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
     alert(jqXHR.statusText); 
     alert(jqXHR.responseText); 
    }, 
    success: function(data){ 
     getContentBox().innerHTML = data; 
} 
}); 

Nó trả về một đối tượng jqXHR với status = 0, statusText = "error" và trống rỗng responseText. Tuy nhiên, php của tôi dường như làm việc, tôi thấy dữ liệu của tôi được chèn vào DB của tôi. Tôi đang làm gì sai?

Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn bạn trước!

EDIT: Bàn điều khiển Chrome cho biết XMLHttpRequest không thể tải http://mysite.com/data.php. Xuất xứ http://www.mysite.com không được cho phép bởi Access-Control-Allow-Origin.

+0

tập lệnh php của bạn gửi tiêu đề nào? những gì đầu ra? – Fender

+0

Bạn đã xem xét yêu cầu/phản hồi trong Firebug hay một số công cụ khác? –

+0

PHP chỉ cần in ra văn bản (in $ data;). Chỉ cần xem yêu cầu với Chrome: Văn bản trạng thái: (đã hủy) Loại: application/x-www-form-urlencoded; charset = UTF-8 – nXu

Trả lời

1

Nhận xét của ShelbyZ dẫn tôi đến giải pháp:

Trình duyệt từ chối thực hiện yêu cầu khi tôi thử sử dụng URL tuyệt đối, tôi phải viết nó là tương đối.

$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: { data: mydata }, 
    cache: false, 
    dataType: "text", 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
     alert(jqXHR.statusText); 
     alert(jqXHR.responseText); 
    }, 
    success: function(data){ 
     getContentBox().innerHTML = data; 
} 
}); 

Cảm ơn!

0

Hãy thử điều này (bạn quên đóng khung):

$.ajax({ 
    ... 
    success: function(data){ 
    getContentBox().innerHTML = data; 
    } 
}); 
+0

Ergh, đúng, trong tập lệnh của tôi ở đó, đó chỉ là lỗi sao chép-dán. Cảm ơn tho. – nXu

0

Tại sao không sử dụng được xây dựng trong bài chức năng của jquery để đơn giản hóa ví dụ này

  $.post('http://mysite.com/process.php', mydata, function(data) { 
       if (data.status == 1) { 
        getContentBox().html() = data; 
       } else { 
        alert(data.status); 
        alert(data.statusText); 
        alert(data.responseText); 
       } 
      }); 

im không chắc chắn những gì phản ứng trạng thái của bạn vì vậy bạn có thể phải chỉnh sửa điều đó nhưng điều này sẽ hoạt động nếu bạn đặt nó bên trong một số $('form here').submit(function() {POSTCODEHERE});

0

Tôi đã gặp vấn đề tương tự. Hàm Ajax được gắn với nút (type = "submit") bên trong của <form>, vì vậy luôn luôn khi tôi nhấn nút này, trang của tôi đã tải lại và chức năng error hoạt động thay vì success. Tôi thực sự không biết làm thế nào là điều này liên quan nhưng khi tôi thêm event.preventDefault() để lắng nghe hành động của nút và nó trở nên làm việc tốt.

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