2011-12-13 3 views
13

Im relatevely новый с ASP.Net MVC3,ASP.NET Ajax.BeginForm посылает множественные запросы

У меня есть форма обрабатывается с помощью Ajax, например:

@using (Ajax.BeginForm ("dtjson" , новый AjaxOptions {HttpMethod = "Post", UpdateTargetId = "detalle_tarifa", OnSuccess = "exito2", OnBegin = "bloquear"}))

Моя проблема в том, что когда я отправляю данные, он отправляет запрос дважды.

Позволяет взглянуть на представление.

Это форма:

enter image description here

нормально, теперь вид после представить:

enter image description here

И это один, чтобы показать поджигатель отладки:

enter image description here

На макете, у меня есть те 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> 

И на представлении (частичный вид), у меня есть это:

<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> 

Похоже, что это проблема с jquery ... но я не уверен в этом ...

Любая помощь будет замечательной, спасибо всем!

+0

Можно ли разместить файлы javascript в вашем представлении/макете? – nemesv

+0

, конечно, я уже сделал это! Я обнаружил, что это может быть проблемой с файлами jquery. – mleger45

ответ

61

Вы включили jquery.unobtrusive-ajax.min.js дважды один раз в макет один раз в частичном. Таким образом, ваш браузер дважды выполняет js внутри, который будет дважды подписываться на событие click формы, а именно, делает два POST вместо одного.
Таким образом, вам необходимо удалить jquery.unobtrusive-ajax.min.js из частичного.

Примечание: Если вы используете частичный с макетом, вам не нужно дублировать js, включенные в частичный, поскольку это уже сделано с помощью макета. Есть некоторые хорошие статьи о layouts и partials.

+0

Хорошо, если я не дублирую js '.. они не будут работать на странице. Я уже пробовал. В том числе ненавязчивый, кстати, я удалил это ant на этот раз, он отправляет 3 запроса ... – mleger45

+0

Я думаю, что проблема связана с http: //bugs.jquery.com/ticket/4373, если код сервера не работает нормально – mleger45

+0

Спасибо Nemesv. Это помогло мне решить проблему, на которую я застрял почти 2 дня! – jhartzell

2

У меня в моем случае у меня был «return View» вместо «return PartialView».

2

Вы добавили jquery.unobtrusive-ajax.js три раза. Это случилось со мной.

Проверьте конфигурацию пакета «~/ui/js/jquery.unobtrusive. *". на вашей странице вы добавили jquery.unobtrusive-ajax.js снова, возможно, на странице макета, и вы добавили его.

Смежные вопросы