Javascript “AJAX错误”;setRequestHeader";没有定义
我对代码中的错误有点困惑Javascript “AJAX错误”;setRequestHeader";没有定义,javascript,ajax,Javascript,Ajax,我对代码中的错误有点困惑 function submitArticle() { var postTitle = encodeURIComponent(document.getElementById('postTitle').value); var postDes = encodeURIComponent(document.getElementById('postDes').value); var postCont = encodeURIComponent(documen
function submitArticle() {
var postTitle = encodeURIComponent(document.getElementById('postTitle').value);
var postDes = encodeURIComponent(document.getElementById('postDes').value);
var postCont = encodeURIComponent(document.getElementById('postCont').value);
var data = "postTitle=" + postTitle + "&postDes=" + postDes + "&postCont=" + postDes;
var getXML = function () {
try {
xhr = new XMLHttpRequest();
}
catch(e) {
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
alert("Your Browser is not Supported");
}
}
}
}
open('POST', 'http://localhost/blog/engine/engine.php', true);
setRequestHeader("Content-type", "application/x-www-form-urlencoded");
send(data);
getXML.onreadystatechange = function() {
if(this.readyState === 4) {
if(this.status ===200) {
alert(this.responseText);
}
else {
alert("status" + this.status);
}
}
else {
alert("readyState" + this.readyState);
}
}
getXML();
return true;
}
我正在为此使用onclick事件。我已经检查了URL,并确保在输入变量值时没有犯任何错误。我收到“setRequestHeader未定义”错误以及显示链接“localhost/blog/app/POST”的新窗口
我已经尽可能多地查阅了,我不知道下一步该怎么办。也。一定有比我为getXML()函数编写代码更好的方法
setRequestHeader
是XmlHttpRequest对象的一种方法
您需要执行
xhr.setRequestHeader(…)
我为我的愚蠢问题感到抱歉。我没有意识到的是XMLHttpRequest有许多方法,其中open、send和setRequestHeader是@Chris Jones所说的方法的一部分。因此,当我使用这些方法时,我需要使用xhr
这是我的最新作品
function submitArticle() {
xhr = new ajaxValue();
function ajaxValue() {
try {
xhr = new XMLHttpRequest();
}
catch(e) {
try {
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
var xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
alert("Your Browser is not Supported");
}
}
}
return xhr;
}
var postTitle = document.getElementById('postTitle').value;
var postDes = document.getElementById('postDes').value;
var postCont = document.getElementById('postCont').value;
var data = "postTitle=" + postTitle + "&postDes=" + postDes + "&postCont=" + postDes;
var url = '../engine/engine.php';
xhr.open('POST', url , true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(data);
xhr.onreadystatechange = function() {
if(this.readyState === 4 ) {
if (this.status ===200) {
alert(this.responseText);
}
}
else {
alert("status " + this.status);
alert("readyState " + this.readyState);
}
}
return false;
}
如果您对JavaScript的了解太少,以至于尝试在不引用实际对象的情况下调用对象方法,那么您最好为我们提供一个像jQuery这样的库,它可以很好地为您处理所有这些内容……与我在其中告诉您的问题完全相同。:)谢谢@epascarello,我现在已经设法让整个事情顺利进行。接受Chris的回答,这里没有任何意义(更不用说接受了)。读者不需要更新的代码转储。作为信息,必须在
xhr.open()之后调用xhr.setRequestHeader()