Je souhaite appeler un script JS dans une réponse Ajax. Ce qu'il fait est de passer le script document.getElementById
à l'Ajax responseText.Exécuter le script Javascript à partir de la réponse ajax
Le code actuel me retourne cette erreur: Uncaught TypeError: Cannot set property 'innerHTML' of null
Cela se fait avec Visual Studio Cordova ..
Ajax:
$("#loginBtn").click(function() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.write(this.responseText);
}
}
xmlhttp.open("POST", "http://www.sampleee.esy.es/login.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("username=" + username + "&" + "password=" + password);
});
PHP:
if($count == 1){
echo "document.getElementById('alertBox').innerHTML = 'Login Success!';
document.getElementById('alertBox').className = 'alert alert-success';
document.getElementById('alertBox').style.display = 'block';
setTimeout(function() {
window.location.href = '../html/dashboard.html';
}, 1000);
";
}else{
echo "document.getElementById('alertBox').innerHTML = 'Invalid login details';
document.getElementById('alertBox').className = 'alert alert-danger';
document.getElementById('alertBox').style.display = 'block';
";
}
L'élément avec l'identifiant 'alertBox' n'est pas dans le DOM au moment où vous y accédez et essayez de définir' innerHTML'. L'ajoutez-vous quelque part avant l'appel ajax? sinon, vous devez le faire en premier. – varontron
Je pense qu'il serait plus facile d'avoir le PHP juste retourner un indicateur de succès/échec et avoir le test Ajax JS existant qui retourne la valeur et afficher le message approprié avec la classe appropriée. De plus, étant donné que vous utilisez jQuery, pourquoi codifiez-vous votre propre appel Ajax au lieu d'utiliser '$ .ajax()'? – nnnnnn
vous devez créer un élément de script, puis ajouter le texte de la réponse, puis ajouter l'élément au DOM –