Cette question est une suite de this un. J'ai créé un simple example pour vérifier comment le code est exécuté dans le gestionnaire. Pour la formeDébogage des gestionnaires jquery
<form id="calendar_id" method="post">
Insert date: <input id="date_id" type="text" name="l_date" required>
</form>
Je suis en train de récupérer les champs en utilisant le javascript suivant:
function get_form_data_uid($form) {
var unindexed_array = $form.serializeArray();
var indexed_array = {};
$.map(unindexed_array, function (n, i) {
indexed_array[n['name']] = n['value'];
});
indexed_array['uid'] = 'badbfadbbfi';
return indexed_array;
}
$("#calendar_id").submit(function (e) {
var uri, method, formId, $form, form_data;
// Prevent default submit
e.preventDefault();
e.stopImmediatePropagation();
uri = "/";
method = "POST";
formId = "#calendar_id";
$form = $(formId);
form_data = get_form_data_uid($form);
alert("form_data " + form_data);
// Set-up ajax call
var request = {
url: uri,
type: method,
contentType: "application/json",
accepts: "application/json",
cache: false,
// Setting async to false to give enough time to initialize the local storage with the "token" key
async: false,
dataType: "json",
data: form_data
};
// Make the request
$.ajax(request).done(function (data) { // Handle the response
// Attributes are retrieved as object.attribute_name
console.log("Data from change password from server: " + data);
alert(data.message);
}).fail(function (jqXHR, textStatus, errorThrown) { // Handle failure
console.log(JSON.stringify(jqXHR));
console.log("AJAX error on changing password: " + textStatus + ' : ' + errorThrown);
});
});
Cependant, le code dans le gestionnaire n'est pas exécuté (l'alerte est non représenté). Pourquoi?
Edit:
Le code fonctionne jsfiddle mais pas dans Firefox.
J'ai fait une erreur lors de la copie du code. L'alerte n'est pas affichée indépendamment. – Sebi
Très bien, en effet votre violon semble échouer avec une erreur même après avoir fixé le nom de la fonction. Cependant, lorsque je copie le code corrigé textuellement dans ce Codepen http://codepen.io/anon/pen/BodXRp, il affiche en fait l'alerte comme prévu. – Thernys
Oh, votre violon (après le correctif) a seulement échoué parce que vous n'aviez pas inclus jQuery comme bibliothèque, mais l'utilisez dans votre code. Après ces deux corrections, le violon montre l'alerte. (https://jsfiddle.net/8g0rvgnt/7/) – Thernys