2010-10-05 50 views
0

L'utilisation de Facebox avec .NET (Web Forms) est douloureuse: ce site HTML a été conçu par quelqu'un d'autre. Je peux aussi avoir des problèmes avec IIS (7.5). Ce pop-up Facebox est dans un fichier séparé, login.html, qui est appelé à partir index.html:

$k('a[rel*=example_2]').facebox_1({ 
    loading_image : '/images/loading.gif', 
    close_image : '/images/closelabel.gif' 
}); 

et le lien pour l'ouvrir

<a href="login.html" title="Log In" rel="example_2" id='login'>Log In </a> 

Le formulaire doit être soumis avec le nom d'utilisateur et mot de passe (login.html):

<form name="login" method="post" action="#" onsubmit="return false;"> 

et après sa validation (cela fonctionne), il affiche à Login.aspx (login.html):

$('form[name="login"]').submit(function() { 
    var $loginForm = $('form[name="login"]'); 
    if ($loginForm.valid()) { 
     $.post("Login.aspx", $(this).serialize()); 
    } else { 
     $loginForm.validate(); 
    } 
}); 

Les postes de formulaire. Je peux le déboguer dans Visual Studio dans la méthode Page_Load de login.aspx. La dernière ligne de la méthode Page_Load est la suivante:

Response.Redirect("welcomepage.html"); 

Toutefois, la fenêtre contextuelle Facebox est conservée. Firebug montre le message, Il frappe la méthode Page_Load de login.aspx, et le pop-up Facebox ne va nulle part. MAIS, Firebug montre welcomepage.html rendu deux fois dans l'onglet Réponse de la demande XHR (huh? Pourquoi XHR?). Je pensais que $ post faisait un postback régulier. Et pourquoi mon navigateur ne redirige pas réellement.

Fix Tentative

Si je change la forme login.html à action='login.aspx', je reçois une méthode d'erreur 405,0 pas autorisé (mais, il essaie de poster index.html, HUH?). Et je ne peux pas comprendre comment réparer cela dans IIS 7.5 sur Windows 7. Je reçois cette erreur dans Visual Studio et lors du déploiement en local à IIS. J'avais lu cela peut avoir à faire avec le mappage de script, les gestionnaires, ou le fait que je poste à partir d'un mais je ne peux pas trouver une solution suffisante. Des idées ici? Si je peux comprendre la redirection de Facebox, je n'aurai peut-être pas besoin de cette correction.

Répondre

1

XmlHttpRequests will transparently follow the redirect, ce qui signifie que l'appel AJAX $.post() fait est obtenir réorienté, et après cela ... pas la page de parent réel.

$.post() ne fait pas faire postback régulièrement, il fait un AJAX POST, qui est probablement la source de la confusion, vous devez utiliser un <form> standard si vous avez l'intention de le faire régulièrement, postback page changement.

+0

Merci pour la clarification. Donc, maintenant, il semblerait que IIS est mon problème. L'utilisation d'un formulaire standard avec l'attribut 'action = 'login.aspx'' produit l'erreur 405.0 mentionnée dans la section" Tentative de réparation "ci-dessus. Est-ce parce que .html ne peut pas poster sur .aspx par défaut? –

+0

@David - Quelle méthode utilisiez-vous alors? –

+0

Post, comme indiqué ci-dessus dans 'form name = 'login''. Je supprime également la liaison de la fonction submit et l'attribut 'onsubmit' du formulaire. –