Je souhaite exécuter un appel ajax dès qu'un document est chargé. Ce que je fais est de charger une chaîne qui contient des données que je vais utiliser pour une fonctionnalité de saisie semi-automatique. C'est ce que j'ai fait, mais ça n'appelle pas le servlet.Comment effectuer un appel AJAX immédiatement lors du chargement d'un document
J'ai supprimé les appels aux divers scripts JS pour le rendre plus clair. J'ai fait plusieurs appels AJAX similaires dans mon code mais généralement déclenchés par un clic, je ne suis pas sûr de la syntaxe pour le faire dès que le document se charge, mais je pensais que ce serait le cas (mais pas):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="../js/jquery.js" type="text/javascript">
</script>
<link rel="stylesheet" href="../css/styles.css" type="text/css">
<link rel="stylesheet" href="../css/jquery.autocomplete.css" type="text/css">
<script type="text/javascript" src="../js/jquery.bgiframe.min.js">
</script>
<script type="text/javascript" src="../js/jquery.dimensions.js">
</script>
<script type="text/javascript" src="../js/jquery.autocomplete.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: "GET",
url: "AutoComplete",
dataType: 'json',
data: queryString,
success: function(data) {
var dataArray = data;
alert(dataArray);
}
});
$("#example").autocomplete(dataArray);
});
</script>
<title></title>
</head>
<body>
API Reference:
<form><input id="example"> (try "C" or "E")</form>
</body>
</html>
EDIT: mon code ressemble plus à Karim:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "../AutoComplete",
success: function(data) {
$("#example").autocomplete(data);
}
});
});
Néanmoins, la saisie semi-automatique ne fonctionne toujours pas (certes une autre question, alors je vais aussi poster une autre question donc il a un approprié Titre).
Ma variable "data" qui est renvoyée ressemble à ... "Manuscript | Texte | Information Objet | Basketball | Ball | Equipement sportif | Tarentule" .split ("|");
Si je
var dataArray = "Manuscript|Text|Information Object|Basketball|Ball|Sporting Equipment|Tarantula".split("|");
puis
$("#example").autocomplete(dataArray);
Tout fonctionne très bien, mais quand je reçois la valeur de tableauDonnees du serveur, il ne fonctionne pas.
J'ai remis les balises
Il suffit d'utiliser
Assurez-vous également que la réponse est vraiment un JSON. Si la servlet donne l'erreur, elle ne sera pas traitée correctement dans votre cas. Utilisez firebug pour voir si le servlet est appelé et quelle a été la réponse. Ou faites une journalisation minimale sur le serveur.
Source
2010-05-10 13:35:02 Juriy
$ (document) .ready (fonction() {}); et $ (fonction() {}); sont la même chose. S'il veut exécuter du code quand la page a fini de charger et pas quand le DOM a fini de charger, il doit utiliser $ (document) .load – Greg
Vous rencontrez ce problème car l'appel $ .ajax ne renvoie pas avant l'initialisation de la saisie semi-automatique, en raison de la nature asynchrone de XHR. La requête est envoyée, l'exécution passe dans l'expression suivante avant que le
dataArray
ait été rempli dans le rappelsuccess
. Essayez ceci:Cela assurera que votre saisie semi-automatique est initialisée que lorsque a été reçu la réponse du serveur.
Source
2010-05-10 13:59:32 karim79
Merci J'ai essayé quelque chose de similaire mais ça ne marche toujours pas, j'ai posé une autre question http://stackoverflow.com/questions/2803589/jquery-autocomplete-works-with-a-local-string-but-not-when-the-same-string-is-cal ce qui explique le problème plus correctement. – Ankur
Vous pouvez utiliser les outils de développement de Google Chrome Browser pour connaître le retour de votre serveur. Pour accéder aux touches Ctrl + Maj + I et à la vue de l'outil de développement, vérifiez l'onglet Réseau pour voir si une erreur ou des données erronées arrivent ou non.
Source
2013-04-29 21:32:03 raj239
Cela devrait être un commentaire. – Ren