2015-10-13 1 views
0

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.

Répondre

0

Au moins, vous appelez une fonction get_form_data_with_token() qui n'est définie nulle part dans votre code. Peut-être que vous vouliez appeler votre get_form_data_uid().

J'aurais juste fait un commentaire, mais apparemment je ne peux pas.

+0

J'ai fait une erreur lors de la copie du code. L'alerte n'est pas affichée indépendamment. – Sebi

+0

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

+0

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