par
subzeros » 17 janv. 2019, 19:50
Bonjour,
J'ai donc un problème lors de l'envoi de mon formulaire je vous explique.
Le but et d’enregistrer les informations dans un fichier a partir d'un formulaire en utilisant ajax (Jquery). J'ai donc mon formulaire qui est comme ceci (Ne sera pas en entier pour l'exemple)
Informations : Le formulaire est bien envoyé puisque les informations sont bien enregistrer dans le fichier
<form id="config-form" action="/ajax/config-form.php" class="form-horizontal form-bordered" method="post">
<input type="hidden" name="action" value="send" />
<div class="contact-form-success alert alert-success d-none mt-4" id="contactSuccess">
<strong>Succès!</strong> La configuration a été enregistrée.
</div>
<div class="contact-form-error alert alert-danger d-none mt-4" id="contactError">
<strong>Erreur!</strong> Un problème est survenue lors de l'enregistrement de la configuration.
<span class="mail-error-message text-1 d-block" id="mailErrorMessage"></span>
</div>
<input type="text" class="form-control" id="nom_entreprise" name="nom_entreprise" value="">
<input type="text" class="form-control" id="slogan_entreprise" name="slogan_entreprise" value="">
<input type="submit" value="Enregistrer" class="btn btn-primary btn-modern" data-loading-text="Chargement...">
</form>
Voici mon fichier javascript
(function($) {
$('#config-form').each(function(){
$(this).validate({
submitHandler: function(form) {
var $form = $(form),
$messageSuccess = $form.find('.contact-form-success'),
$messageError = $form.find('.contact-form-error'),
$submitButton = $(this.submitButton),
$errorMessage = $form.find('.mail-error-message'),
submitButtonText = $submitButton.val();
$submitButton.val( $submitButton.data('loading-text') ? $submitButton.data('loading-text') : 'Chargement...' ).attr('disabled', true);
// Fields Data
var formData = $form.serializeArray(),
data = {};
$(formData).each(function(index, obj){
data[obj.name] = obj.value;
});
// Ajax Submit
$.ajax({
type: 'POST',
url: $form.attr('action'),
data: data
}).always(function(data, textStatus, jqXHR) {
$errorMessage.empty().hide();
if (data.response == 'success') {
$messageSuccess.removeClass('d-none');
$messageError.addClass('d-none');
// Reset Form
$form.find('.form-control')
.val('')
.blur()
.parent()
.removeClass('has-success')
.removeClass('has-danger')
.find('label.error')
.remove();
if (($messageSuccess.offset().top - 80) < $(window).scrollTop()) {
$('html, body').animate({
scrollTop: $messageSuccess.offset().top - 80
}, 300);
}
$form.find('.form-control').removeClass('error');
$submitButton.val( submitButtonText ).attr('disabled', false);
return;
} else if (data.response == 'error' && typeof data.errorMessage !== 'undefined') {
$errorMessage.html(data.errorMessage).show();
} else {
$errorMessage.html(data.responseText).show();
}
$messageError.removeClass('d-none');
$messageSuccess.addClass('d-none');
if (($messageError.offset().top - 80) < $(window).scrollTop()) {
$('html, body').animate({
scrollTop: $messageError.offset().top - 80
}, 300);
}
$form.find('.has-success')
.removeClass('has-success');
$submitButton.val( submitButtonText ).attr('disabled', false);
});
}
});
});
}).apply(this, [jQuery]);
Et voici mon fichier PHP pour le traitement
header('Content-type: application/json');
foreach($_POST as $label => $value)
{
//-- ......
}
$contenu = 'Ce que je veut enregistrer';
if (isset($_POST["action"]) && $_POST["action"] == "send")
{
$fileconfig = $_SERVER['DOCUMENT_ROOT'] . '/includes/config.php';
//-- Assurons nous que le fichier est accessible en écriture
if (is_writable($fileconfig))
{
//-- Assurons nous que le fichier existe
if (file_exists($fileconfig))
{
$fp = fopen($fileconfig, 'w');
fwrite($fp, $contenu);
fclose($fp);
$arrResult = array ('response'=>'success');
}
else
{
$arrResult = array ('response'=>'error','errorMessage'=>'Le fichier config n\'existe pas.');
echo json_encode($arrResult);
}
}
else
{
$arrResult = array ('response'=>'error','errorMessage'=>'Le fichier config n\'est pas accessible en écriture!');
echo json_encode($arrResult);
}
}
else
{
$arrResult = array ('response'=>'error','errorMessage'=>'Une erreur est survenu lors de l\'envoi du formulaire.');
echo json_encode($arrResult);
}
Donc comme je disait ci-dessus le formulaire s'envoi bien, les informations sont bien enregistrer dans mon fichier config.php. Mais lorsque je clique sur mon bouton de mon formulaire j'ai mon message qui apparait "
Un problème est survenue lors de l'enregistrement de la configuration." qu'on retrouve dans mon fichier html.
J'ai essayer de mettre une alert(data.response) dans mon fichier javascript juste avant le if (data.response == 'success') { mais le alert me dit undefined, je ne comprend pas trop
Comment savoir ou est le problème, merci pour vos futurs réponses, en espérant avoir été le plus claire possible dans mon explication.

Bonjour,
J'ai donc un problème lors de l'envoi de mon formulaire je vous explique.
Le but et d’enregistrer les informations dans un fichier a partir d'un formulaire en utilisant ajax (Jquery). J'ai donc mon formulaire qui est comme ceci (Ne sera pas en entier pour l'exemple)
[b]Informations[/b] : Le formulaire est bien envoyé puisque les informations sont bien enregistrer dans le fichier
[html]<form id="config-form" action="/ajax/config-form.php" class="form-horizontal form-bordered" method="post">
<input type="hidden" name="action" value="send" />
<div class="contact-form-success alert alert-success d-none mt-4" id="contactSuccess">
<strong>Succès!</strong> La configuration a été enregistrée.
</div>
<div class="contact-form-error alert alert-danger d-none mt-4" id="contactError">
<strong>Erreur!</strong> Un problème est survenue lors de l'enregistrement de la configuration.
<span class="mail-error-message text-1 d-block" id="mailErrorMessage"></span>
</div>
<input type="text" class="form-control" id="nom_entreprise" name="nom_entreprise" value="">
<input type="text" class="form-control" id="slogan_entreprise" name="slogan_entreprise" value="">
<input type="submit" value="Enregistrer" class="btn btn-primary btn-modern" data-loading-text="Chargement...">
</form>[/html]
[b]Voici mon fichier javascript[/b]
[html](function($) {
$('#config-form').each(function(){
$(this).validate({
submitHandler: function(form) {
var $form = $(form),
$messageSuccess = $form.find('.contact-form-success'),
$messageError = $form.find('.contact-form-error'),
$submitButton = $(this.submitButton),
$errorMessage = $form.find('.mail-error-message'),
submitButtonText = $submitButton.val();
$submitButton.val( $submitButton.data('loading-text') ? $submitButton.data('loading-text') : 'Chargement...' ).attr('disabled', true);
// Fields Data
var formData = $form.serializeArray(),
data = {};
$(formData).each(function(index, obj){
data[obj.name] = obj.value;
});
// Ajax Submit
$.ajax({
type: 'POST',
url: $form.attr('action'),
data: data
}).always(function(data, textStatus, jqXHR) {
$errorMessage.empty().hide();
if (data.response == 'success') {
$messageSuccess.removeClass('d-none');
$messageError.addClass('d-none');
// Reset Form
$form.find('.form-control')
.val('')
.blur()
.parent()
.removeClass('has-success')
.removeClass('has-danger')
.find('label.error')
.remove();
if (($messageSuccess.offset().top - 80) < $(window).scrollTop()) {
$('html, body').animate({
scrollTop: $messageSuccess.offset().top - 80
}, 300);
}
$form.find('.form-control').removeClass('error');
$submitButton.val( submitButtonText ).attr('disabled', false);
return;
} else if (data.response == 'error' && typeof data.errorMessage !== 'undefined') {
$errorMessage.html(data.errorMessage).show();
} else {
$errorMessage.html(data.responseText).show();
}
$messageError.removeClass('d-none');
$messageSuccess.addClass('d-none');
if (($messageError.offset().top - 80) < $(window).scrollTop()) {
$('html, body').animate({
scrollTop: $messageError.offset().top - 80
}, 300);
}
$form.find('.has-success')
.removeClass('has-success');
$submitButton.val( submitButtonText ).attr('disabled', false);
});
}
});
});
}).apply(this, [jQuery]);[/html]
[b]Et voici mon fichier PHP pour le traitement[/b]
[PHP]header('Content-type: application/json');
foreach($_POST as $label => $value)
{
//-- ......
}
$contenu = 'Ce que je veut enregistrer';
if (isset($_POST["action"]) && $_POST["action"] == "send")
{
$fileconfig = $_SERVER['DOCUMENT_ROOT'] . '/includes/config.php';
//-- Assurons nous que le fichier est accessible en écriture
if (is_writable($fileconfig))
{
//-- Assurons nous que le fichier existe
if (file_exists($fileconfig))
{
$fp = fopen($fileconfig, 'w');
fwrite($fp, $contenu);
fclose($fp);
$arrResult = array ('response'=>'success');
}
else
{
$arrResult = array ('response'=>'error','errorMessage'=>'Le fichier config n\'existe pas.');
echo json_encode($arrResult);
}
}
else
{
$arrResult = array ('response'=>'error','errorMessage'=>'Le fichier config n\'est pas accessible en écriture!');
echo json_encode($arrResult);
}
}
else
{
$arrResult = array ('response'=>'error','errorMessage'=>'Une erreur est survenu lors de l\'envoi du formulaire.');
echo json_encode($arrResult);
}[/PHP]
Donc comme je disait ci-dessus le formulaire s'envoi bien, les informations sont bien enregistrer dans mon fichier config.php. Mais lorsque je clique sur mon bouton de mon formulaire j'ai mon message qui apparait "[b]Un problème est survenue lors de l'enregistrement de la configuration.[/b]" qu'on retrouve dans mon fichier html.
J'ai essayer de mettre une alert(data.response) dans mon fichier javascript juste avant le if (data.response == 'success') { mais le alert me dit undefined, je ne comprend pas trop :(
Comment savoir ou est le problème, merci pour vos futurs réponses, en espérant avoir été le plus claire possible dans mon explication. ;)