2010-03-30 6 views
0

J'ai essayé de résoudre ce problème pour quelques jours sans succès. J'ai un formulaire, où j'utilise le plugin de validation, et quand j'essaie de le soumettre, il soumet des vars vides. Maintenant, si je supprime la validation, tout fonctionne bien. Voici mon implémentation:jQuery Validation plugin résultats en vide AJAX POST

$(document).ready(function(){ 

$("#myForm").validate({ 
    rules: { 
    field1: { 
     required: true, 
     minlength: 5 
    }, 
    field2: { 
     required: true, 
     minlength: 10 
    } 
    }, 
    messages: { 
    field1: "this is required", 
    field2: "this is required", 
    }, 
    errorLabelContainer: $("#validate_msg"), 
    invalidHandler: function(e, validator) { 
    var errors = validator.numberOfInvalids(); 
    if (errors) { 
     $("#validate_div").show(); 
    } 
    }, 
    onkeyup: false, 
    success: false, 
    submitHandler: function(form) { doAjaxPost(form); } 
}); 
}); 

function doAjaxPost(form) { 
    // do some stuff 
    $(form).ajaxSubmit(); 
    return false; 
} 

Comme je l'ai écrit cela ne fonctionne pas quand j'ai ma validation, mais si je retire cela, et il suffit d'ajouter un

onsubmit="doAjaxPost(this.form); return false"; 

à mon formulaire HTML, il fonctionne - n'importe quelle idée ???

Répondre

0

Pourquoi avez-vous besoin de doAjaxPost? Et je suppose que le return false pourrait être le coupable. As-tu réellement besoin de cela?

Tu ne peux pas le faire

... 
submitHandler: function(form) { 
    //do some stuff 
    $(form).ajaxSubmit(); 
} 
... 
+0

Voir ma réponse ci-dessus. – user305412

0

Je soved la question, les problèmes était l'url i poursuivi en justice pour poste. Au lieu d'utiliser une URL complète:

var url = "https://" + document.domain + "/ajax.php"; 

Je viens d'utiliser:

var url = "/ajax.php"; 

et tout fonctionne comme il se doit.


Lorsque vous utilisez PHP avec les cookies, l'ID de session sera automatiquement envoyée dans les en-têtes de demande même pour Ajax XMLHttpRequests. Si vous utilisez ou autoriser des sessions php basées sur des URL, vous devrez ajouter l'ID de session à chaque URL de demande Ajax , OU utiliser un chemin d'URL relatif (comme la solution ci-dessus).

<script language="javascript" type="text/javascript"> 
//<![CDATA[ 
    var url = 'https://'+document.domain+'/ajax.php?<?=session_name(); ?>=<?=session_id(); ?>'; 
//]]> 
</script> 

Qui fonctionne aussi bien.

Questions connexes