2012-06-18 5 views
5

Tôi nhận được lỗi này như là một phần của câu đố lớn hơn này here.Giải thích lỗi DOM 11 khi khởi tạo XMLHttpRequest với JSON -headers

var xhr = new XMLHttpRequest(); 
xhr.setRequestHeader('Content-Type', 'application/json'); 

//Error: INVALID_STATE_ERR: DOM Exception 11 

Đối với nghiên cứu sâu hơn

  1. cuốn sách của O'Reilly "Hướng dẫn Definite để Javascript 6 Edition" trên trang 491 trong chương 18 "Scripted HTTP" thảo luận XMLHttpRequest, xin vui lòng, lưu ý rằng nó không chỉ là về HTTP hoặc XML (di tích lịch sử).

  2. nhập dev của Mozilla về XMLHttpRequest here

+0

thể trùng lặp của [INVALID_STATE_ERR: DOM ngoại lệ 11 (WebKit)] (http://stackoverflow.com/questions/3488698/invalid-state-err-dom- exception-11-webkit) –

+0

Bạn đã thử tìm kiếm Stack Overflow cho "DOM 11" chưa? Đã tồn tại một loạt các chủ đề giải quyết vấn đề này. –

+3

@ ŠimeVidas: Đó không phải là một bản sao tốt. INVALID_STATE_ERR/11 được sử dụng cho * rất nhiều thứ * ... – Ryan

Trả lời

6

Bạn cần phải open() các XMLHttpRequest trước khi bạn có thể đặt tiêu đề yêu cầu. Chỉ cần di chuyển dòng đó đến sau khi bạn gọi open():

var xhr = new XMLHttpRequest(); 
xhr.open('POST', 'example.php', true); 
xhr.setRequestHeader('Content-Type', 'application/json'); 
+0

Giả sử tôi chỉ chạy mã của tôi trong Bảng điều khiển trình duyệt, thì '" example.php "' trong trường hợp đó là gì? Mozilla Dev-site có một số quái vật '" url + = ((/\?/).test(url)? "&": "?") + (New Date()). GetTime() "' nhưng có lẽ không có gì đó ở đây? (xin lỗi, đây có thể là câu hỏi kết xuất, vẫn đang học/đọc nội dung ...) – hhh

+1

@hhh: Bất kỳ trang nào bạn muốn yêu cầu - nhưng nó phải nằm trong cùng một tên miền hoặc bạn sẽ nhận được một ngoại lệ. – Ryan

+0

Có một vấn đề, không có trang. Mục đích của tôi trong câu hỏi khác là thêm nội dung vào db trong địa chỉ 'http: //127.0.0.1: 5984/test', couchDB có thể được truy cập như thế. – hhh