Bonjour à tous,
Voila cela fait 2 semaine que je bûche sur un gros problème,
je code un panel de serveur de jeux, pour changer la version du serveur j'envoie cela en ajax sauf que quand je sélectionne une version soit la page refrech mais la version n'est pas installer soit sa charge indéfiniment obligé de redémarrer apache pour naviguer dans le panel, pas d'érreur dans la console.
Si la page ce refrech le message pour me dire que la version a été installé s'affiche sauf que la version n'ai pas installer du tout.....et quand je sélectionné une autre version il m'installe la version que sélectionné avant ( celle qui ne c'est pas installé ) etc...
Code Ajax:
$(document).ready(function() {
// Lorsque je soumets le formulaire
$('#monForm').on('submit', function(e) {
e.preventDefault();
$("#product-container ").slideDown('slow');
$("#product-container #container1").html('<img src="http://destinyworld.servegame.com/cubecp/img/ajax-loader.gif"> Application en cours...');
setTimeout(5000);
var $this = $(this); // L'objet jQuery du formulaire
// Je récupère les valeurs
var modpacks = $('#changemodspack').val();
// Je vérifie une première fois pour ne pas lancer la requête HTTP
// si je sais que mon PHP renverra une erreur
// Envoi de la requête HTTP en mode asynchrone
$.ajax({
url: $this.attr('action'), // Le nom du fichier indiqué dans le formulaire
type: $this.attr('method'), // La méthode indiquée dans le formulaire (get ou post)
data: $this.serialize(), // Je sérialise les données (j'envoie toutes les valeurs présentes dans le formulaire)
success: function(html) { // Je récupère la réponse du fichier PHP
$("#product-container ").slideDown('slow');
$("#product-container #container1").html(html);
location.reload();
$("#monForm").reset();// J'affiche cette réponse
},
error: function(data) {
alert('An unexpected error has occurred!');
$("#product-container ").slideDown('slow');
$("#product-container #container1").html('<b>errooor</b>');
}
});
return true;
});
});
Formulaire de sélection des versions :
<form id="monForm" action="<?php echo $this->Html->url(array('controller' => 'Minecraft', 'action' => 'change', $id)); ?>'" method="post">
<?= $this->Form->input('mod_packs', array('name' => 'changemodspack','label' => 'Version de votre serveur', 'options' => $ModPacks)); ?>
<?= $this->Form->input('null', array('name' => 'id', 'value' => $id ,'type' => 'hidden')); ?>
<input type="submit" id="envoyer" value="Envoyer" />
</form>
Traitement en php:
public function change($id) {
if ($this->request->is( 'ajax' )){
# code...
$this->loadModel ( 'ModPacks' );
$this->loadModel ( 'Minecraft' );
$this->loadModel ( 'Machine' );
$id = $this->request->data ( 'id' );
$Minecraft = $this->Minecraft->findByid ( $id );
$this->set ( 'Minecraft', $Minecraft );
$Machine = $this->Machine->findByid ( $Minecraft ['Minecraft'] ['machine_id'] );
$this->Minecraft->save (array(
'id' => $id,
'mod_pack' => $this->request->data ( 'changemodspack' )
));
$ModPacks = $this->ModPacks->findByid ($Minecraft ['Minecraft'] ['mod_pack']);
$ip = $Machine ['Machine'] ['ssh_ip'];
$port = $Machine ['Machine'] ['ssh_ports'];
$user = $Machine ['Machine'] ['ssh_users'];
$password = $Machine ['Machine'] ['ssh_password'];
$userminecraft = $Minecraft ['Minecraft'] ['user'];
$nomjar = $ModPacks ['ModPacks'] ['nom'];
$cmmd = 'rm -rf /home/'.$userminecraft.'/server/libraries; rm -rf /home/'.$userminecraft.'/server/*.jar; wget '.$ModPacks ["ModPacks"]['url'].'; unzip '.$ModPacks ["ModPacks"] ["fichierzip"].'.zip -d /home/'.$userminecraft.'/server/; chmod 777 /home/'.$userminecraft.'/server/libraries/; chmod 777 /home/'.$userminecraft.'/server/*.jar; rm -rf *.zip; exit ';
if (! function_exists ( "ssh2_connect" ))
die ( "function ssh2_connect doesn't exist" );
if (! ($con = ssh2_connect ( $ip, $port ))) {
$this->Session->setFlash ( 'Impossible de se connecter au serveur distant!' );
} else {
if (! ssh2_auth_password ( $con, $user, $password )) {
$this->Session->setFlash ( 'Impossible de se connecter au serveur distant nom d utilistaeur ou mots de passe pas bon !' );
} else {
// execute a command
if (! ($stream = ssh2_exec ( $con, $cmmd ))) {
echo "échec de l'exécution de la commande\n";
} else {
// collect returning data from command
stream_set_blocking ( $stream, true );
$data = "";
while ( $buf = fread ( $stream, 4096 ) ) {
$data .= $buf;
}
fclose ( $stream );
}
}
}
return 'La version a bien été modifié vous pouvez démmarer votre serveur !';
$this->setFlash('<div style="padding-top: 2px;height: 18px;font-size: 13.2px;margin-bottom: 0px;margin-top: -19px;" class="alert alert-success">
<a style="margin-top: 3px;margin-right: -7px;" href="#" class="close" onclick="$(this).parent().slideUp()">×</a>
<div style="margin-top:7px;"><img style="width: 19px;margin-right: 12px;margin-top: 0px;margin-left: -3px;vertical-align: -5px;" src="http://destinyworld.servegame.com/cubecp/img/ajax-loader.gif"> Serveur en cour de démarage</div>
</div>');
}
}
Si tu bloque l'actualisation de la page et que tu regardes dans "Network", que te retourne la requête AJAX (contenu) ?