J'ai dans mon .js : (c'est le même code que dans le cours et le corrigé)
if (isJson) { //definit qu'il s'agit de Json req.setRequestHeader("Content-Type", "application/json"); //transforme le javascript en Json data = JSON.stringify(data);
}
mais j'ai ce message d'erreur :
SCRIPT5022: InvalidStateError
Fichier : temoignageAjax.js, ligne : 20, colonne : 9
Je ne comprends pas du tout où est le problème ... d'autant plus que dans le corrigé c'est exactement la même chose ...
Des idées pour m'aider à comprendre ...? Je n'ai aucune notion en CORS ou PHP ...
Mais ce qui m'intrigue c'est que même le corrigé a un message d'erreur ...
Hello, tu pourrais nous mettre le lien + ancre ou nous montrer le(s) code(s) complet en utilisant les balises code stp ?
Mais pour te dire ce que c'est les problèmes de CORS sont liés au fait que tu souhaites accéder à une ressource sur un autre nom de domaine que le tiens. Et d'autres choses encore. Je te laisse regarder sur internet le CORS.
Mais ce qui m'intrigue c'est que tu n'as pas de notion en PHP ou autre alors que tu dois sauvegarder tes données ?
Je n'ai pas de notion en PHP et en CORS ... parce que pour l'instant je n'ai fais que les cours : HTML/CSS, Javascript-intro, Javascript-web et j'ai commencer javascript dynamiser site web (je m'en sers comme cours d'approfondissement et pour réviser).
Le PHP sera le prochain.
Envoyer des données sur un serveur externe est abordé en fin de chapitre sur l'envoi sur un serveur externe (javascript-web), y a même une activité la dessus.
Et j'ai les messages qui me demandent une spécification CORS préliminaire ... Mais il s'agit là du corrigé !! Alors je ne comprends pas pourquoi ça ne marche pas.
c'est tout a fait normal dans la grande majorité des cas, c'est pour des raison de sécurités, tu ne peux pas faire des requêtes sur un serveur diffèrent de celui d'origine sans autorisation CROS (genre une page venant du serveur A ne peux pas faire de requêtes sur le serveur B).
Maintenant vu le message je dirais que tu n'as pas fait d'erreur mais que le serveur n'a pas été configuré pour accepter ce genre de choses.
Le plus simple serai de te faire un petit serveur pour tester ou partir de principe que ça fonctionne ^^.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Merci pour vos messages, je vais essayer de contacter le prof du cours ... parce que j'ai bien peur que cela m'empêche de finir le cours en m'empêchant de réussir la dernière activité.
En tout cas, je vous remercie pour vos suggestions/aides.
Je vous donne que ceux du corrigé, parce que si j'arrive à la faire fonctionner chez moi, peut être que j'arriverai aussi à modifier mon code en conséquence pour l'exercice.
// Exécute un appel AJAX GET
// Prend en paramètres l'URL cible et la fonction callback appelée en cas de succès
function ajaxGet(url, callback) {
var req = new XMLHttpRequest();
req.open("GET", url);
req.addEventListener("load", function () {
if (req.status >= 200 && req.status < 400) {
// Appelle la fonction callback en lui passant la réponse de la requête
callback(req.responseText);
} else {
console.error(req.status + " " + req.statusText + " " + url);
}
});
req.addEventListener("error", function () {
console.error("Erreur réseau avec l'URL " + url);
});
req.send(null);
}
// Exécute un appel AJAX POST
// Prend en paramètres l'URL cible, la donnée à envoyer et la fonction callback appelée en cas de succès
// Le paramètre isJson permet d'indiquer si l'envoi concerne des données JSON
function ajaxPost(url, data, callback, isJson) {
var req = new XMLHttpRequest();
req.open("POST", url);
req.addEventListener("load", function () {
if (req.status >= 200 && req.status < 400) {
// Appelle la fonction callback en lui passant la réponse de la requête
callback(req.responseText);
} else {
console.error(req.status + " " + req.statusText + " " + url);
}
});
req.addEventListener("error", function () {
console.error("Erreur réseau avec l'URL " + url);
});
if (isJson) {
// Définit le contenu de la requête comme étant du JSON
req.setRequestHeader("Content-Type", "application/json");
// Transforme la donnée du format JSON vers le format texte avant l'envoi
data = JSON.stringify(data);
}
req.send(data);
}
Ils permettent au navigateur et au serveur d’en savoir suffisamment l’un sur l’autre afin de déterminer si la requête ou la réponse cross-domain doit réussir ou échouer.
Pour fonctionner, le mécanisme nécessite :
un navigateur supportant cette technologie :
Internet Explorer 10+
Firefox 3.5+
Chrome 3+
Safari 4+
Note : IE 8 et 9 ont un support partielde CORS. Retenir en particulier que :
les méthodes HTTP PUT et DELETE ne sont pas supportées
les requêtes à entête HTTP Content-Type ne peuvent contenir que la valeur text/plain
les requêtes émises ne peuvent pas contenir de cookies
Je viens de refaire un test avec Chrome et Firefox. Apparemment cela fonctionne ... Il s'agit donc d'un problème de navigateur.
Problème résolu ...
- Edité par Pitchounvivi 15 décembre 2018 à 18:49:21
T'inquiètes pas, je suis une vrai hybride ... j'aime l'ancien et le neuf ... J'aime bien tester plusieurs possibilités ....
En fait, je fais exprès d'utiliser celui là parce que j'enregistre pas mal de chose sur mon hdd.
Chrome n'est pas pratique pour enregistrer des pages web.
Et Modzilla m'a déjà causé des problèmes, à cause de certains plugins (pour payer par exemple).
Créer de pages web intéractives avec javascript
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub