2011-12-13 23 views
13

Im relatevely nuevo con Asp.net MVC3,ASP.NET Ajax.BeginForm envía múltiples peticiones

Tengo una forma manejado con el Ajax, así:

@using (Ajax.BeginForm ("dtjson" , nuevas AjaxOptions {HttpMethod = "Post", UpdateTargetId = "detalle_tarifa", OnSuccess = "exito2", OnBegin = "bloquear"}))

Mi problema es que cuando envío los datos, envía la solicitud dos veces.

Echemos un vistazo a la vista.

Ésta es la forma:

enter image description here

bien, ahora la vista después de presentar:

enter image description here

Y éste es mostrar la depuración Firebug:

enter image description here

En la presentación, tengo los archivos javascript ..

<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.windows-engine.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.jqDock.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.jqDock.min.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.tablePagination.0.4.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.tools.min.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.cookie.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.treeview.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.treeview.edit.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

Y en la vista (una vista parcial), tengo esto:

<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script> 
<script type="text/javascript" [email protected]("~/Content/tinymce/jscripts/tiny_mce/jquery.tinymce.js")></script> 
<script type="text/javascript" [email protected]("~/Content/tinymce/jscripts/tiny_mce/tiny_mce.js")></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
<script src="@Href("~/Scripts/jquery.uploadify.js")" type="text/javascript"></script> 
<script src="@Href("~/Scripts/jquery.scrollTo.js")" type="text/javascript"></script> 
<script src="@Href("~/Scripts/jquery.blockUI.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
<script src="/Scripts/jquery.cookie.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.treeview.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.treeview.edit.js" type="text/javascript"></script> 

Parece que hay un problema con jquery ... pero no estoy seguro de ello ...

Cualquier ayuda sería genial, ¡Gracias a todos!

+0

¿Puede publicar qué archivos javascript están incluidos en su vista/diseño? – nemesv

+0

¡por supuesto que ya lo hice! Encontré que esto podría ser un problema con los archivos jquery. – mleger45

Respuesta

61

Se han incluido jquery.unobtrusive-ajax.min.js dos veces una vez en el diseño de una vez en el parcial. Por lo tanto, su navegador ejecuta el js dentro dos veces, que se suscribirá dos veces en el evento de clic de formulario, por lo que realiza dos POST en lugar de uno.
Por lo tanto, debe eliminar el jquery.unobtrusive-ajax.min.js del parcial.

Nota: Si estas usando un parcial con un diseño que no es necesario duplicar el js incluidos en el parcial, porque ya está hecho por el trazado. Hay algunos buenos artículos sobre layouts y partials.

+0

Ok, si no duplico js ... no funcionarán en la página ... Ya lo intenté. Incluyendo el no intrusivo, por cierto lo eliminé esta vez, envía 3 solicitudes ... – mleger45

+0

Creo que el problema tiene que ver con http: //bugs.jquery.com/ticket/4373, a menos que el código del servidor funcione bien – mleger45

+0

Gracias Nemesv. ¡Esto me ayudó a resolver un problema en el que me he quedado atrapado durante casi 2 días! – jhartzell

2

En mi caso, tuve "vista de retorno" en lugar de "devolver vista parcial".

2

Usted ha agregado jquery.unobtrusive-ajax.js tres veces. Me había pasado a mí también.

Registrar en configuración de paquete "~/ui/js/jquery.unobtrusive. *". en su página ha agregado jquery.unobtrusive-ajax.js otra vez, tal vez en la página de diseño también lo ha agregado.

Cuestiones relacionadas