J'ai déclaré une fonction dans un script en ligne au début de mes balises body. Puis dans un script externe. Sur un formulaire soumettre. il déclenche une fonction anonyme qui gère les données du formulaire et soumet une méthode $ .ajax. Le script externe est appelé à la fin du fichierImpossible d'appeler la fonction javascript en ligne à partir de scripts externes
Le problème est que j'ai affecté un nom de fonction dans ma balise de formulaire en tant que 'data-success = "functionName"'. Cela déclenche la fonction dans le script externe. Mais les scripts externes ne reconnaissent pas la fonction inline appelée dans le fichier html.
Voici un exemple. https://jsfiddle.net/vsbmn8w1/?utm_source=website&utm_medium=embed&utm_campaign=vsbmn8w1
HTML
<script>
$(document).ready(function() {
// The Inline function that dont get called externally
function searchResult(data) {
alert()
}
});
</script>
<!-- Trigger On Submit -->
<form method="post" class="async-form" data-success="searchResult">
<button type="submit">submit</button>
</form>
EXTERNE SCRIPT
$(document).ready(function() {
$(document).on("submit", "form.async-form", function(event) {
// Declare form in a variable
var $this = $(this);
// Prevent Page reloading
event.preventDefault();
// Collect Form parameters
var action = $this.prop('action');
var method = $this.prop('method');
var form = $this.serialize();
// Default request object
var request = {
url: action,
type: method,
data: form
};
// Adding parameter to the object if data exist
if (typeof $this.data('success') != 'undefined') {
request['success'] = $this.data('success');
}
if (typeof $this.data('error') != 'undefined') {
request['error'] = $this.data('error');
}
if (typeof $this.data('beforeSend') != 'undefined') {
request['beforeSend'] = $this.data('beforeSend');
}
if (typeof $this.data('complete') != 'undefined') {
request['complete'] = $this.data('complete');
}
// Finally make the ajax request
$.ajax(request);
})
});