Je veux exécuter une requête Ajax pour obtenir la "Datum" de la réponse "Testerid". Ensuite, je veux exécuter le second Ajax avec le "Datum" précédemment reçu avec cette valeur sur une autre page, une entrée de dB.
Voici le code qui ne fonctionne pas. P>
$(document).ready(function(){ var TesterID = "<?php echo $_GET['TesterID']; ?>"; /* value der Tester erhalten */ $.ajax({ /* AJAX aufrufen */ url: 'ma_get-TesterID.php', type: 'get', /* Methode zum übertragen der Daten */ data: {TesterID:TesterID}, /* Daten zu übermitteln */ dataType: 'json', success:function(response){ /* Die zurückgegebenene Daten erhalten */ var len = response.length; $("#Teststart").empty(); /* Die erhaltenden Daten werden bei der ID angezeigt */ for( var i = 0; i<len; i++){ var CID = response[i]['CID']; var Datum = response[i]['Datum']; $("#Teststart").append("<option value='"+Datum+"'>"+Datum+"</option>"); } } }); $("#TesterID").change(function(){ /* Wenn du änderst und vom Select Feld auswählst */ var TesterID = $(this).val(); /* value der Tester erhalten */ $.ajax({ /* AJAX aufrufen */ url: 'ma_get-TesterID.php', type: 'get', /* Methode zum übertragen der Daten */ data: {TesterID:TesterID}, /* Daten zu übermitteln */ dataType: 'json', success:function(response){ /* Die zurückgegebenene Daten erhalten */ var len = response.length; $("#Teststart").empty(); /* Die erhaltenden Daten werden bei der ID angezeigt */ for( var i = 0; i<len; i++){ var CID = response[i]['CID']; var Datum = response[i]['Datum']; $("#Teststart").append("<option value='"+Datum+"'>"+Datum+"</option>"); } } }); }); });
5 Réponses :
Quelques problèmes avec le code d'origine:
Votre deuxième Le moyen facile de le faire est avec la fonctionnalité Pour ce faire, nous devons d'abord déclarer la fonction joint en tant que alors nous ajoutons ensemble, le moteur JavaScript pause le code au premier comme écrit, la variable Vous pouvez résoudre ce problème en déclarant Enfin, vous devez remplacer AJAX code> doit terminer avant de démarrer deuxième
ajax code> strong> p>
AJAX code> Appel a besoin de la valeur de
Datum code> qui est renvoyé par le premier
AJAX code> appel. Actuellement, le second
ajax code> commencera immédiatement après l'envoi du premier
ajax code>, avant d'avoir renvoyé
datum code>. Nous devons donc attendre le premier
ajax code> pour renvoyer
datum code> avant de pouvoir l'utiliser comme entrée pour le second
ajax code>. P>.
async / attendre code> de ECMA2017 (docs ICI ). Cela permet à JavaScript de courir de manière asynchrone et d'attendre que quelque chose se termine avant de procéder. P>
async code> (voir // 1. Commentaires dans le code ci-dessous): p>
attendre code> devant le premier
$. (Ajax) code> appel (Voir // 3. Commentaires dans le code ci-dessous): p>
Ajax code> appeler Renvoie la valeur
datum code>. Ensuite, il continuera comme normal. P>
Datum code> doit être au niveau supérieur de la fonction enfermante forte> p>
Datum code> n'existe que dans la fonction anonyme attribuée à "Succès" code> dans le premier
AJAX code> appel. Il n'est donc pas disponible pour le second
Ajax code> appel ("Datum n'est pas défini"). p>
datum code> comme global (en dehors du
$. (prêt) {} code>), ou mieux, vous pouvez le garder dans votre
$. (prêt) {} code> en la déclarant sur les crochets les plus externes (voir // 2. Commentaires dans le code ci-dessous). P>
varatum = réponse ['datum']; code> avec
datum = réponse ['Datum']; code>. (Voir // 4. Commentaire dans le code ci-dessous). P>
/* Funktionen um Startzeiten für Zyklen aus DB.TesterCycleCount zu erhalten bzw. für Test und Stunden, das aktuelle Datum gerundet auf 30 Minuten */
// 1. ADD 'ASYNC' IN FRONT OF FUNCTION
$(document).ready(async function(){
// 2. DECLARE 'DATUM' AT TOP
var Datum;
var TesterID = "<?php echo $_GET['TesterID']; ?>"; /* value der Tester erhalten */
// 3. ADD AWAIT IN FRONT OF FIRST AJAX CALL
await $.ajax({ /* AJAX aufrufen */
url: 'ma_get-TesterID_Testende.php',
type: 'GET', /* Methode zum übertragen der Daten */
data: {TesterID:TesterID}, /* Daten zu übermitteln */
dataType: 'json',
success:function(response){ /* Die zurückgegebenene Daten erhalten */
var CID = response['CID'];
// 4. REMOVE VAR IN FRONT OF DATUM
Datum = response['Datum'];
},
error: function(jqxhtt, status, exception) {
console.log(exception);
alert('Exception:', exception)
}
});
var TestaufstellungID = "<?php echo $_GET['TestaufstellungID']; ?>";
$.ajax({ /* AJAX aufrufen */
url: 'ma_TestendeSQL.php',
type: 'get', /* Methode zum übertragen der Daten */
data: {Testaufstellung:TestaufstellungID, Datum: Datum}, /* Daten zu übermitteln */
dataType: 'json',
success:function(data){ /* Die zurückgegebenene Daten erhalten */
alert('Successfully called Datum='.Datum);
},
error: function(jqxhr, status, exception) {
alert('Exception:', exception)
}
});
});
Je reçois toujours l'erreur sur ma ma: Testende.php Page SyntaxError: JSON.PARSE: Caractère inattendu à la ligne 1 Colonne 1 des données JSON
Cela ressemble à des données JSON que vous soumettez n'est pas valide JSON. Pouvez-vous mettre une console.log () quelque part pour imprimer des données JSON? Ensuite, vous pouvez comparer à JSONFORDER.Curiousconcept.com pour voir où l'erreur de formatage est et corrigez-la avant de l'envoyer.
Pouvez-vous m'aider où je peux placer la console.log (), semble ne pas fonctionner, lorsque je vous ai placé dans
C'est beaucoup de code pour nous deviner. Pouvez-vous élaborer sur ce que "ne fonctionne pas" signifie dans ce cas? Lorsque vous déboguez, où / comment cela échoue spécifiquement?
"Ne fonctionne pas" ne fonctionne pas comme une description de problème, et si vous le disiez comme un développeur, cela signifie principalement que vous i> ne fonctionne pas. " S'il vous plaît aller lire Comment demander , puis nous donner une description appropriée du problème. Et si vous comptez uniquement sur votre code pour expliquer ce qui se passe aux gens ici, ces commentaires devraient au moins être en anglais aussi.
Est-il possible de supprimer le succès des options dans les deuxième et troisième $ .AJAX? Je n'ai pas besoin des variables d'écho json_encode de l'autre page PHP.
Si vous pouvez éviter de faire une deuxième / troisième demande au même serveur pour une seule opération, ce serait une bonne chose. Essayez de faire connaître toute votre logique de serveur dans une demande.
@David et reposez la requête SQL Server sur mon autre page ne mettez pas la mise à jour avec l'AJAX appelée Valeurs. Donc, ma question n'est que dans cet article est-il possible de gérer 2 requêtes Ajax comme ceci?
@Daniel: Oui, il est possible d'exécuter plusieurs demandes AJAX. Les sites Web font cela tout le temps. Si vous avez quelque chose de spécifique qui échoue de manière spécifique, nous pourrons peut-être aider avec cela, si vous pouvez fournir des détails sur ce qui manque et comment cela échoue. "La requête SQL sur mon autre page ne met pas à jour" n'est pas vraiment quelque chose que nous pouvons aider. Lorsque vous déboguez, la demande AJAX en question contient-elle les valeurs que vous attendez? Quelle est la réponse du serveur? Quelle est la requête exécutée? Quelles sont les valeurs utilisées dans cette requête? Quel est le résultat? Etc.
ok jetate d'essayer avec le débogage que j'ai ajouté une alerte dans le succès et l'erreur et à la fin de l'en-tête de page ('Type de contenu: Application / Json'); Erreur est: SyntaxError: JSON.PARSE: Caractère inattendu à la ligne 1 Colonne 1 des données JSON
@David J'ai ajouté la page PHP avec le code SQL que j'essaie de combiner avec la deuxième déclaration AJAX.
Vous êtes une pratique codante est horrible. Vous ne testez jamais
si (Isset ($ _ obtenir ["yourgetprophere '])) {} code>. Vous n'utilisez pas non plus une déclaration préparée correctement. Vous n'avez jamais
-> exécuter (); code> la déclaration. PHP.net/manual/fr/mysqli.prepare.php
L'une des raisons probables des votes en baisse n'est jamais élaborée sur "ne fonctionne pas". Soyez plus précis, ce qui ne se passe-t-il pas, qu'est-ce qui ne se passe-t-il pas, quelles erreurs obtenez-vous? Cela vous aiderait également à vous rendre votre code plus lisible sans des masses d'espace blanc et en utilisant une indentation cohérente
Je ne peux pas enfermer l'erreur, toujours la même: SyntaxError: JSON.PARSE: Personnage inattendu à la ligne 1 Colonne 1 des données JSON. J'ai déjà essayé les réponses, toujours la même erreur.
Ma nouvelle question à décomposer le problème et à encapsuler Stackoverflow.com/Questtions/56239790/...
@Daniel Vous avez juste besoin d'ajouter
async: true code> après
DataType: 'json' code> pour asynchrone Lire .
@Jaydeepmor c'est la même chose comme
attendre code>
J'ai fait une édition avec d'autres infos.