2010-07-05 4 views
0

J'essaie d'appeler une boîte de dialogue ui jquery en attachant la fonction à la propriété onsuccess des ajaxoptions sur un ajax.beginform ..ajax.beginform onsucess updatetargetid entrée cachée

<script type="text/javascript"> 
    // Dialog 
    $(document).ready(function() { 
     $('#dialog').dialog({ 
      autoOpen: false, 
      width: 600, 
      modal: true, 
      buttons: { 
       "Ok": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 
</script> 

Dans un fichier séparé script que je cette ..

function EmailResult() { 
    $('#dialog').dialog('open'); 
} 

, j'ai un formulaire de contact qui ne fait encore câblé, le régulateur répond juste avec l'une des deux réponses à cordes.

<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "ContactResult", OnSuccess="EmailResult" })) 
{ %> 

Si je prends le OnSuccess="EmailResult" du Ajax.BeginForm ou simplement retirer $('#dialog').dialog('open'); de ma fonction EmailResult l'erreur disparaît si ce obvisouly est un problème avec la propriété OnSuccess et une interface utilisateur JQuery Dialog.

Ma première question est de savoir si je fais quelque chose qui ne fonctionne pas et/ou si cela ne fonctionne pas, alors il y a une meilleure solution. J'essaye de créer une boîte de dialogue qui apparaît et indique si le message a été envoyé. Je ne veux pas utiliser la boîte de dialogue d'alerte.

je suppose que l'erreur serait utile, dans l'IE 8 débogueur il arrive avec une erreur non définie dans la bibliothèque MicrosoftAjax.js

Le bloc finally de ce code est à l'origine du problème et sous l'onglet habitants dans IE 8 il est dit que b est indéfini.

this._onReadyStateChange = function() { 
    if (a._xmlHttpRequest.readyState === 4) { 
     try { 
      if (typeof a._xmlHttpRequest.status === "undefined") return 
     } catch (b) { 
      return 
     } 
     a._clearTimer(); 
     a._responseAvailable = true; 
     try { 
      a._webRequest.completed(Sys.EventArgs.Empty) 
     } finally { 
      if (a._xmlHttpRequest != null) { 
       a._xmlHttpRequest.onreadystatechange = Function.emptyMethod; 
       a._xmlHttpRequest = null 
      } 
     } 
    } 
}; 

Ce qu'il a été mise à jour était

<%= Html.Hidden("ContactResult") %> 

qui se révèle était le problème, je l'ai changé l'entrée cachée à un div et il fonctionne parfaitement. Je ne sais pas pourquoi mais ... si quelqu'un d'autre se heurte à ce que vous allez ...

+0

La boîte de dialogue modale fonctionne également parfaitement lorsque vous la connectez à un lien, cela ne fonctionne pas dans l'exemple ci-dessus. En fait, si vous le reliez à OnComplete au lieu de OnSucces, la boîte de dialogue modale apparaîtra, mais vous aurez toujours la même erreur. – Casey

Répondre

0

Donc je suppose que c'est ce que j'ai compris .. J'ai commencé un nouveau projet mvc avec deux entrées et a commencé à utiliser une boîte d'alerte comme il s'avère qu'il n'était pas lié au plugin de dialogue jquery.ui. Je l'ai eu pour fonctionner correctement avec la boîte d'alerte à venir après qu'il a été exécuté en utilisant le ajax.beginform. Bref histoire courte .. Vous ne pouvez pas utiliser une entrée cachée pour le UpdateTargetID dans le Ajax.BeginForm? Je suppose que c'est une sorte de question et la réponse, mais en changeant le UpdateTargetID à l'ID d'un "div" le fixe et cela fonctionne correctement. Vous pouvez même définir la visibilité Div à caché et cela fonctionne.

Questions connexes