2010-06-18 23 views
5

Xin chào, tôi đã gặp sự cố lạ với cuộc gọi AJAX trên trang web của mình. Tôi thực hiện một cuộc gọi AJAX đơn giản đến một tập lệnh trên trang web của tôi. Nhưng cuộc gọi AJAX không thành công với readyState = 4 và status = 0. Không có vấn đề tên miền chéo vì kịch bản tôi muốn gọi là trên máy chủ của tôi.XHR readyState = 4 nhưng Status = 0 trong Trình duyệt Google Chrome

$.ajax({ 
        type:"GET", 
        url: 'http://mydomain.com/test.php', 
        success : function(response){ 
         console.log(response); 
        }, 
        error : function(XHR){ 
         console.log(arguments); 
        } 
}); 

Tôi đã googled rất nhiều trang web nhưng dường như không có giải pháp cho điều đó!

+0

là trang web của bạn trên www. hoặc tên miền khỏa thân? – Kinlan

+0

=> Nếu bạn đang đối mặt với vấn đề này, chỉ cần làm một việc trước tiên hãy xóa cookie phiên trình duyệt của bạn rồi thêm ** "Math.rendom()" ** vào url của bạn ajax ** Ví dụ: "sample.php? R = "+ Math.random(); ** => Có phải url được viết chính xác không? Nếu bạn viết nó như là một URL tuyệt đối ** (như http: //www.etc) ** nó sẽ không hoạt động. Đó có phải là một con đường tương đối không? – SKULL

+0

Bạn có tìm thấy câu trả lời không? Tôi nhận được cùng một vấn đề và tôi không phải là một vấn đề tên miền. –

Trả lời

3

Điều này xảy ra khi URL của yêu cầu AJAX có tên miền khác với trang mà tập lệnh đang chạy. Ví dụ: www.mydomain.commydomain.com khác nhau.

Để khắc phục nó, thay thế

url: 'http://mydomain.com/test.php', 

với

url: 'http://' + document.domain + '/test.php', 

Tôi tìm thấy câu hỏi này trong khi tìm kiếm câu trả lời bản thân mình. Tôi đã nhận được giải pháp từ here.

+0

cũng khi giao thức khác, tức là, tệp: // và http: // localhost ... –

+1

Tôi nhận được lỗi tương tự trên một trang rất đơn giản hoạt động 99% thời gian sản xuất. Nhưng thỉnh thoảng tôi gặp lỗi này. Mã có cùng tên miền và giao thức, rất dễ để nói vì javascript ngắn và url được mã hóa cứng. –

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