Почему не вызывается моя функция JavaScript? - PullRequest
0 голосов
/ 08 октября 2010

Вот что у меня есть для моего сайта Index:

<%  if (Model.Data != null)
    {
       if (Model.Data.Rows.Count > 0)
       {
       var divLoadGif = string.Empty;
           var divRealData = string.Empty;
           for(int n = 0; n < Model.Data.Rows; n++)
           {
               divLoadGif  = "divLoadGif_"  + n.ToString("0000");
               divRealData = "divRealData_" + n.ToString("0000");    
%>
               <div id="<%:divLoadGif%>" style="width: 100%;">
                  Please wait ... 
                  <img src="/loading.gif" alt="loading ..." />
               </div> 

               <div id="<%:divRealData%>" style="visibility: hidden;">
                  <div id="column_1" style="width: 25%; float:left;">
                     This
                  </div>
                  <div id="column_2" style="width: 25%; float:left;">
                     is
                  </div>
                  <div id="column_3" style="width: 25%; float:left;">
                     a test
                  </div>
                  <div id="column_4" style="width: 25%; float:left;">
                    row.
                  </div>
               </div>

               <script type="text/javascript">
                  AsyncFunction(<%: divLoadGif %>, <%: divRealData %>, n);
               </script>
<%        }
       }
    }
%>

Контроллер заполняет мой Model.Data.Например:

  • Model.Data.Row должно быть равно 3. Это означает, что цикл будет делать 3 "раунда".Идея состоит в том, что в каждом «раунде» должен отображаться gif загрузки, а часть div (с 4 столбцами) невидима.

  • Тогда функция JavaScript AsyncFuntionCall должнаназываться.(Это не удалось.)

  • Эта функция JavaScript становится двумя "идентификаторами тегов div" и n (переменная цикла for).Затем он будет использовать AJAX для вызова метода контроллера.

  • Метод контроллера также получает теги div и n.

  • Наконец,метод контроллера будет вызываться 3 раза.Метод контроллера будет возвращать «результат» для каждого вызова.Каждому вызову потребуется несколько секунд, прежде чем он вернет результат функции AJAX.

Часть success: function (result) { result = $.parseJSON(result); ...} моего вызова AJAX будет выполнять следующие действия:

  • Анализ result.

  • Переключение div с помощью id="<%:divLoadGif%>" на скрытое.

  • Переключениеdiv с id="<%:divRealData%>" до видимого.

  • Заменить 4 "значения" на проанализированные значения от result.

Легко?Не для меня :-( потому что у меня есть некоторые проблемы:

  1. Цикл работает нормально. Но функция JavaScript AsyncFunction вообще не вызывается! Что происходит не так?

  2. Я абсолютно не представляю, как я могу изменить значения "This" "is" "a test" "row" в success: function (result) { result = $.parseJSON(result); ...} части моего вызова AJAX.

1 Ответ

1 голос
/ 07 декабря 2010

Попробуйте AsyncFunction(<%: divLoadGif %>, <%: divRealData %>, <%: n %>);

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