Je suis en train de mettre en œuvre simple xhr l'abstraction, et j'obtiens de cet avertissement lorsque vous essayez de définir les en-têtes d'un message. Je pense qu'il pourrait avoir quelque chose à voir avec la définition des en-têtes dans un autre fichier js, parce que lorsque j'ai mis dans l' <script>
balise dans la .fichier html, il a bien fonctionné. La requête POST fonctionne bien, mais j'ai cet avertissement, et je suis curieux de savoir pourquoi. Je reçois cet avertissement pour les deux content-length
et connection
- têtes, mais uniquement dans les navigateurs WebKit (Chrome 5 bêta de Safari 4). Dans Firefox, je n'ai pas toutes les mises en garde, le Contenu de l'en-tête de Longueur est définie sur la valeur correcte, mais la Connexion est configurée pour les garder en vie au lieu de la fermer, ce qui me fait penser qu'il est aussi ignorant mon setRequestHeader appels et de générer son propre. Je n'ai pas essayé ce code dans IE. Voici le balisage & de code:
test.html
:
<!DOCTYPE html>
<html>
<head>
<script src="jsfile.js"></script>
<script>
var request = new Xhr('POST', 'script.php', true, 'data=somedata', function(data) {
console.log(data.text);
});
</script>
</head>
<body>
</body>
</html>
jsfile.js
:
function Xhr(method, url, async, data, callback) {
var x;
if(window.XMLHttpRequest) {
x = new XMLHttpRequest();
x.open(method, url, async);
x.onreadystatechange = function() {
if(x.readyState === 4) {
if(x.status === 200) {
var data = {
text: x.responseText,
xml: x.responseXML
};
callback.call(this, data);
}
}
}
if(method.toLowerCase() === "post") {
x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
x.setRequestHeader("Content-Length", data.length);
x.setRequestHeader("Connection", "close");
}
x.send(data);
} else {
// ... implement IE code here ...
}
return x;
}