нажатие кнопки не связывается правильно при первом щелчке, но правильно привязывается при втором щелчке - PullRequest
0 голосов
/ 16 марта 2011


Я использую VS2010, MVC3.
У меня есть следующий скрипт jquery, чтобы, после нажатия кнопки, получить ActionResult в потоке контроллера pdf-версии страницы в новом окне.
Однако вот что происходит:
Когда страница сначала отображается, я получаю оповещения: «in hereb1» и правильное значение URL для actionUrl.
При первом нажатии на кнопку я получаю оповещения «в hereb2» и «undefined» в качестве значения для URL, и открывается новое окно с ошибкой для неопределенного ресурса.
В третий раз, когда я нажимаю на кнопку, я получаю оповещения "в hereb2" и правильное значение URL (такое же значение, как actionUrl), и открывается новое окно с ожидаемым результатом. Нет ошибок.
Почему первый клик не имеет доступа к правильному значению actionUrl?

<script type="text/javascript">
 $(document).ready(function () {
     alert("in hereb1");
     var actionUrl = '@MvcHtmlString.Create(Html.BuildUrlFromExpressionForAreas<MyController>(c => c.GeneratePdf(Request.Url.ToString())))';
     alert(actionUrl);
     $("#btnPdf").click(function () {
         var url = $(this).attr("href");
         $(this).attr("href", actionUrl);
         alert("in hereb2");
         alert(url);
         var win = window.open(url, "PdfVersion");
         win.focus();
         return false;
     });
  });
 </script>

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Переключатель

var url = $(this).attr("href");
$(this).attr("href", actionUrl);

на

$(this).attr("href", actionUrl);
var url = $(this).attr("href");
0 голосов
/ 16 марта 2011

, если вы пытаетесь открыть actionUrl в новой вкладке / окне, следующий код может помочь

$("#btnPdf").click(function () {
     //var url = $(this).attr("href");
     $(this).attr("href", actionUrl);
     alert("in hereb2");
     alert(actionUrl);
     var win = window.open(actionUrl, "PdfVersion");
     win.focus();
     return false;
 });

Что ваш код делает, так это получает URL, на который btnPdf и открываетURL-адрес в новом окне / вкладке и устанавливает атрибут href btnPdf равным actionUrl, если вы пытаетесь это сделать, убедитесь, что уже обслуживающая страница с атрибутом btnPdf href уже установлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...