2010-04-22 6 views
0

J'ai hérité du code dont j'ai besoin pour déboguer. Cela ne fonctionne pas actuellement. Ma tâche est de le faire fonctionner. Aucune autre exigence ne m'a été donnée. Non, ce n'est pas un devoir, c'est un boulot de cauchemar d'entretien.ajaxSubmit et autre code. Quelqu'un peut-il m'aider à déterminer ce que fait ce code?

ASP.Net (Framework 3.5), C#, jQuery 1.4.2. Ce projet fait un usage intensif de jQuery et AJAX. Il y a une liste déroulante sur une page qui, quand un élément est choisi, est supposée ajouter cet élément (c'est un utilisateur) à un objet dans la base de données.

Pour ce faire, le programmeur précédent, lors du chargement de la page, charge dynamiquement la totalité de la page via AJAX. Pour ce faire, il a 5 div, et chacun est chargé à partir d'un appel jQuery à une autre page complète sur le site.

D'une certaine manière, le HTML et BODY et tous les autres éléments sont supprimés et le contenu de la div est chargé avec le contenu de la page ASPX. Ce qui me semble incroyablement mauvais, car il repose sur le navigateur pour éliminer par magie les balises html, head, body, form et fusionner avec les balises html existantes.

En outre, comme la page « contenu » est retourné comme une chaîne, le programmeur précédent a ce code en cours d'exécution sur elle avant qu'il ne soit ajouté à la div:

function CleanupResponseText(responseText, uniqueName) { 
    responseText = responseText.replace("theForm.submit();", "SubmitSubForm(theForm, $(theForm).parent());"); 
    responseText = responseText.replace(new RegExp("theForm", "g"), uniqueName); 
    responseText = responseText.replace(new RegExp("doPostBack", "g"), "doPostBack" + uniqueName); 
    return responseText; 
} 

Lorsque le menu déroulant se feux, il est onchange événement , voici le code qui est tiré:

function SubmitSubForm(form, container) { 
    //ShowLoading(container); 
    $(form).ajaxSubmit({ 
       url: $(form).attr("action"), 
       success: function(responseText) { 
        $(container).html(CleanupResponseText(responseText, form.id)); 
        $("form", container).css("margin-top", "0").css("padding-top", "0"); 
        //HideLoading(container); 
       } 
      } 
     ); 
    } 

ce souffle dans IE, avec le message que « erreur d'exécution Microsoft JScript: cet objet ne gère pas cette propriété ou méthode » - qui, je pense, a être cette méthode $ (forme) .ajaxSubmit n'existe pas.

Qu'est-ce que ce code essaie vraiment de faire? Je suis tellement renversé en ce moment que je pense que ma seule option est de tout laisser tomber et recommencer. Mais je préfère ne pas le faire à moins que nécessaire.

Ce code est-il bon? Est-ce que cela fonctionne contre .Net, et est-ce la raison pour laquelle nous avons des problèmes?

Répondre

0

On dirait qu'il y avait trop de plaisir jQuery en cours. J'ai complètement retravaillé l'ensemble du bloc de code car il était mal conçu en premier lieu.

0

Une recherche google pour

jquery ajax submit

révèle le jQuery Form Plugin. Compte tenu de cela, ce fichier est-il inclus sur votre page où l'autre code aura accès à la méthode? Ce code fonctionne-t-il dans Firefox et pas IE?

+0

Bonnes suggestions. Oui, c'est inclus, et non, ça ne marche pas non plus dans Firefox. Erreur dans Firefox est "$ (forme) .ajaxSubmit n'est pas une fonction". J'ai même téléchargé la dernière version du script juste pour m'assurer que le précédent ne l'avait pas modifié ou quoi que ce soit. –