2010-05-27 1 views
3

J'ai des problèmes avec le téléchargement d'un fichier lors de l'utilisation de jquery.formulaire d'inscription avec téléchargement de fichier

J'ai le code HTML suivant dans un formulaire.

<fieldset> 
    <ul> 
    <li> 
     <div class="field"><input size="35" type="file" 
          name="formFile" id="formFile"/></div> 
    </li> 
    <li> 
     <div class="field"><input size="35" type="text" 
          name="formFileName" id="formFileName" /></div> 
    </li> 
    </ul> 
</fieldset> 

Pour afficher les données que je me sers $('#myForm').ajaxForm(

Quand je posterai les données et les données Recieved javascript contient, le javascript est pas reconnu.

Je m'attendais à ce que le code JavaScript s'exécute lorsque les données sont reçues, mais il arrive trop tôt. Les résultats indiquent que $ ou jquery n'a pas pu être trouvé.

Si je supprime l'attribut name de l'élément input type = file, il n'y a pas d'erreur, mais ce n'est pas la bonne solution.

Comment cela est-il arrivé?

+0

Veuillez poster le code JavaScript que vous avez utilisé. En outre, un indice: évitez d'utiliser jQuery pour des choses simples comme ceci; cela crée seulement plus de confusion et de problèmes. –

+0

la partie la plus importante du code javacript est: jQuery (forme) .ajaxSubmit ({ target: '#grid .viewport_panel_body'}); } }); Il n'est pas possible pour moi d'éviter d'utiliser jquery dans ce cas. – Jan

Répondre

1

Vous devrez certainement vous assurer que le JS intégré fait partie d'une fonction de rappel.

 
$('#myForm').ajaxForm(function() { 
    //Do your JS execution 
}); 

Personnellement, je ne suis pas fan de la Abstraite .get $(), .post de $(). AjaxForm $(), etc., car ils enlèvent une grande partie de la fonctionnalité du .ajax $() méthodes

S'il est important que vous utilisiez la méthode ajaxSubmit(), il prend l'un des autres paramètres $ .ajax, donc vous voudrez probablement async: false et configurer les rappels de succès/erreur.

 
// attach handler to form's submit event 
$('#myFormId').submit(function() { 
    // submit the form 
    $(this).ajaxSubmit({ 
         success: function(result){ callbackFunction(result); } 
         ,error: function(msg,XMLStatus,err){ errFunction(msg,XMLStatus,err); } 
         }); 
    // return false to prevent normal browser submit and page navigation 
    return false; 
}); 

Espérons que cela devrait éclaircir une partie du problème.