반응형
XMLHttpRequest가 InvalidSateError를 투척하여 "개체 상태를 열어야 합니다"라고 말합니다.
코드 -
"use strict";
var AJAX = function (params) {
this.server ={};
this.url = params.url;
this.method = params.method;
this.dataType = params.dataType;
this.formData = params.formData;
this.init = function(){
if(typeof XMLHttpRequest != 'undefined'){
this.server = new XMLHttpRequest();
this.server.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
this.server.setRequestHeader('Content-length', this.formData.length);
this.server.setRequestHeader('Connection', 'close');
console.log("XMLHttpRequest created.");
return true;
}
};
this.send = function(){
if(this.init()){
this.server.open(this.method, this.url, true);
this.server.send(this.formData);
}
};
};
다음 에러가 발생하고 있습니다.
Error in event handler for contextMenus: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.
사용방법 -
var data = new FormData();
data.append('user', 'sachin');
var params = {
url : 'example.com',
method : 'post',
dataType: 'json',
formData : data
};
var backgroundWindow = chrome.extension.getBackgroundPage();
var ajax = new backgroundWindow.AJAX(params);
ajax.send();
나는 뒤에 있는 이유가 무엇인지 알 수 없을 것 같다.
에러는, 곧바로 발생합니다.
contextMenus 이벤트 핸들러 오류:InvalidStateError: 'setRequest'를 실행하지 못했습니다.'XMLHttpRequest'의 헤더:개체의 상태는 OPENED이어야 합니다.
전화하셔야 합니다..open(..)를 참조해 주세요.
당신의 코드를 고려해 볼 때, 가장 좋은 방법은 전화를 이동해서init(..)기능.
var AJAX = function (params) {
this.server ={};
this.url = params.url;
this.method = params.method;
this.dataType = params.dataType;
this.formData = params.formData;
this.init = function(){
if(typeof XMLHttpRequest != 'undefined'){
this.server = new XMLHttpRequest();
//Open first, before setting the request headers.
this.server.open(this.method, this.url, true);
//Now set the request headers.
this.server.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//this.server.setRequestHeader('Content-length', this.formData.length);
//this.server.setRequestHeader('Connection', 'close');
console.log("XMLHttpRequest created.");
return true;
}
};
this.send = function(){
if(this.init()){
this.server.send(this.formData);
}
};
};
아마 접속을 오픈해야 할 것 같습니다.XMLHttpRequest전화와 그 전에setRequestHeader다음 대신 콜:
this.server = new XMLHttpRequest();
this.server.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
당신이 해야 할 일은 다음과 같습니다.
this.server = new XMLHttpRequest();
this.server.open(this.method, this.url, true);
this.server.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
또, 이 행은 반드시 삭제해당 행은,init()위에서 했던 것처럼요.
언급URL : https://stackoverflow.com/questions/28524485/xmlhttprequest-throwing-invalidsateerror-saying-object-state-must-be-opened
반응형
'programing' 카테고리의 다른 글
| Spring Webflux 및 @Cacheable - 모노/플럭스 유형의 올바른 결과 캐싱 방법 (0) | 2023.03.21 |
|---|---|
| mongodump에 의해 폐기된 데이터를 어떻게 사용하는가? (0) | 2023.03.21 |
| Angular와 유사한 @Input으로 자 컴포넌트에 대한 Angular pass 콜백 함수JS 방식 (0) | 2023.03.21 |
| Angular JS 및 핸들 바 - 둘 다 필요 또는 필요 없음 (0) | 2023.03.21 |
| WP_Query - 여러 사용자 지정 게시 유형 및 사용자 지정 메타별로 정렬 (0) | 2023.03.21 |