Page 1 sur 1

Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 12 sept. 2016, 11:01
par tlalaguedulac
Bonjour,

Actuellement sur un project web / application, je rencontre un problème lors de l'envoi de données AJAX .

Etant obligé de passer par AJAX pour écrire dans ma page efficacement (mon prédecesseur a utilisé ce langage), j'aimerai donc réussir à passer sur de ma page javascript à la page AJAX, le problème étant que je n'ai pas besoin d'envoyer des données du JS à l'AJAX, je veux simplement que ma fonction JS m'amène dans la page AJAX afin d'écrire ensuite dans mon html.

Voici le code de ma fonction :
function toSendHeuresOtp(xmlhttp) {

	var formElement = document.getElementById('heures');
	formData = new FormData(formElement);
	formData.append('TODO', 'heures');

	xmlhttp.open('POST', 'controleur/ajaxGestionOTP.php', true);
	xmlhttp.send(formData);
}
J'obtiens l'erreur : Uncaught TypeError: Cannot read property 'open' of undefined

Si quelqu'un connait le moyen simple de passer du JS à l'AJAX sans envoyer de variables ou autres.

:)

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 12 sept. 2016, 12:09
par @rthur
Bonjour,

"Ajax", c'est simplement le nom donné à un code javascript qui va aller chercher des données sur le serveur sans recharger la page HTML courante.

Donc je veux bien que tu reformules ta question car elle n'est pas très compréhensible :
j'aimerai donc réussir à passer sur de ma page javascript à la page AJAX
Ma recommandation également est d'utiliser jquery qui est une librairie javascript très simple et puissante pour faire de l'ajax.

L'erreur que tu obtiens indiques que ta variable "xmlhttp" n'est pas définie

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 12 sept. 2016, 13:35
par tlalaguedulac
Désolé, j'ai fait une faute de frappe.

En fait j'aimerai simplement avoir une fonction javascript qui me permet avec formData.append('TODO', 'heures'), de catcher dans mon fichier ajax le mot 'heures' grâce à if (isset $_POST['TODO'] == 'heures'), et ensuite pouvoir écrire du xml que je récupererai dans ma page php.

Seulement tous mes exemples comportent une variable à transmettre et dans mon cas, je ne voudrai rien envoyer, seulement le moyen de me déplacer dans le fichier ajax au moyen du fonction js.

Merci pour l'erreur je vais travailler la dessus.

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 12 sept. 2016, 15:29
par moogli
salut,

je reprend ce que @rthur à dit "ajax" c'est un mot générique (dans notre, sinon c'est aussi un produit ménager) qui indique la façon de faire une requête http vers un serveur en Javascript.

donc tu as du JS qui fait un appel serveur qui va exécuter du php.
ce javscript requête HTTP de type POST vers page "php" au serveur cette page va vérifier et traiter les paramètres puis, en fonction des paramètres, retourner du xml.
Ensuite la fonction de callback JS digère le xml reçus.

au passage je te conseil d'utiliser du JSON plutôt que xml ;)

@+

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 12 sept. 2016, 15:33
par tlalaguedulac
Désolé de m'être mal exprimé, car j'ai compris tout cela ! La communication entre les langages et surtout ajax avec javascript et php.

J'ai du mal formulé ma question je voulais simplement écrire depuis ma page en ajax !

Je vais me débrouiller, et effectivement je prefererais du JSON mais mon stage m'oblige à rester sur du xml ...

Merci pour les infos !

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 12 sept. 2016, 17:41
par @rthur
Tu as peut être compris tout cela, mais tu continues de dire des choses inexactes qui donnes l'impression que c'est flou pour toi.
je voulais simplement écrire depuis ma page en ajax !
Ajax n'écrit pas dans une page. Javascript peut faire une requête en ajax et écrire le résultat dans la page.

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 13 sept. 2016, 11:01
par tlalaguedulac
Okay je m'exprime mal alors, et j'en suis confus ! J'ai tout de même réussi à accéder à ma page ajax (PHP). Maintenant c'est le trajet retour qui me pose souci :) Pour envoyer des données de mon fichier php (ajax) vers mon fichier Javascript.

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 13 sept. 2016, 11:09
par Naroth
Bonjour,

C'est marrant mais tu continues.

AJAX est l'acronyme de Asynchronous JavaScript and XML
L'AJAX EST du javascript.

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 13 sept. 2016, 11:18
par tlalaguedulac
je sais bien que l'ajax est du javascript, seulement il se situe dans une page php c'est pour cela que j'ai écrit "php (ajax)" enfin merci pour la petite leçon de morale . Et merci à moogli qui est le seul à avoir tenté de me donner une solution concrete ! Je clos le sujet si c'est pour recevoir des commentaires comme ça.

Re: Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 13 sept. 2016, 15:06
par moogli
je sais bien que l'ajax est du javascript, seulement il se situe dans une page php c'est pour cela que j'ai écrit "php (ajax)" enfin merci pour la petite leçon de morale . Et merci à moogli qui est le seul à avoir tenté de me donner une solution concrete ! Je clos le sujet si c'est pour recevoir des commentaires comme ça.
le problème c'est que si l'on ne te comprend pas on ne peux pas t'aider.
C'est surement clair pour toi mais nous on ne connais ni ton projet ni ton code on ne peu pas toujours tout deviner du coup on demande des précisions, on explique un truc pour essayer d'avancer le sujet.

donc pour accéder au serveur tu utilises une requête serveur (souvent appelées ajax avec le bel l'acronyme de naroth). tu passe des paramètres (GET / POST etc) a cette requête.
coté serveur c'est un script php qui répond lorsqu'il finit son traitement un "echo" (ou print etc.) suffit pour renvoyer quelque chose à l'appelant (donc la du JS).

dans ton cas ton fichier php doit afficher du html.

de manière général une requête serveur faite depuis JS tu peux la faire directement dans ton navigateur (requête GET) ou un client rest (POST).

un peu de code pour aller avec ça
<script type="text/javascript">
 $.post('lefichier.php',{'TODO':'heures'})
    .done(function(data){
// traitement du xml
 });
</script>
<?php

if(!empty($_POST['TODO'])){
// ce que tu veux
// on envoi le résultat à l'appelant
    echo '<root><datas><data>...</data></datas></root>';
}
@+

Re: [RESOLU] Uncaught TypeError: Cannot read property 'open' of undefined

Posté : 13 sept. 2016, 15:11
par tlalaguedulac
Je te remercie de ces précisions et ce modèle de code, j'ai réussi le chemin inverse aussi. Je n'avais effectivement pas compris certains points du rapport entre AJAX PHP HTML, maintenant c'est bien plus clair.

Je ferai en sorte d'être plus sûr de mes connaissances pour les futurs post. :)

Bonne fin de journée !

Et merci encore !