MVC 3 AJAX не работает в IPad - PullRequest
0 голосов
/ 09 ноября 2011

Я пытаюсь выяснить, почему мой вызов AJAX для веб-службы работает на всех браузерах, кроме IPad.У меня есть приложение MVC 3, которое выполняет вызов веб-службы, используя Ajax.Actionlink для API Sharepoint.Звонок прекрасно работает везде, но опыт, кажется, не хватает на IPad.на IPad я получаю результаты, аналогичные тем, что вы реализовали Ajax.ActionLink, не ссылаясь на сценарии jquery и Microsoft js.Я попытался включить инструменты разработчика на IPad и больше не получаю ошибки.(Единственная ошибка, которую я получал, это то, что я пытался использовать библиотеку CDN, которую использует Microsoft, и IPad это совсем не понравилось.) Теперь эти ошибки исчезли, и вызов перенаправляет страницу в частичное представление.Этого не должно происходить, так как любой другой браузер (включая Safari для Windows), похоже, отображает gif загрузки, а затем загружает информацию на той же странице.Нет перенаправления.Есть идеи?

Мастер сайта:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="<%: Url.Content("~/Scripts/jquery-1.4.4.min.js") %>" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
   <%-- <script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.js" type="text/javascript"/>
    <script src="•http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js" type="text/javascript" />
    <script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/MicrosoftMvcAjax.js" type="text/javascript"/>
    <script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/MicrosoftMvcAjax.debug.js" type="text/javascript"/>--%>

    </head>

<body style="background-color:White">
    <div class="page">

        <div id="header">
            <div id="title">
                <h1>My MVC Application</h1>
            </div>


            <div id="menucontainer">

                <ul id="menu">              
                    <li><%: Html.ActionLink("Home", "Index", "Home")%></li>
                   </ul>

            </div>
        </div>

        <div id="main">
            <asp:ContentPlaceHolder ID="MainContent" runat="server" />

            <div id="footer">
            </div>
        </div>
    </div>
</body>
</html>

Индекс: (главная страница)

    <br />
    <br />
    <br />
    <br />
    <br />
    <br />
    <br />
    <br />


    <%:/* This calls the Ajax namespace to invoke an async call to a controller method
        * we are using the POST method because the GET cache's the callback results
        * Refernce: 
        * http://stackoverflow.com/questions/7282497/tinymce-in-mvc-3-razor-ajax-actionlinks-fail-after-first-ajax-call */
    Ajax.ActionLink("Click to Get CIMS Folder", "CallWebService", new AjaxOptions()
                                                        {
                                                        UpdateTargetId = "placeHolder",
                                                        InsertionMode = InsertionMode.Replace,
                                                        LoadingElementId = "indicator",
                                                        HttpMethod="POST",
                                                        })
        %>
    <div id="indicator">
        <img alt="AJAX Indicator" src="<%= Url.Content("~/images/ajax-loader.gif") %>" />
    </div>
    <div id="placeHolder">
    </div>

PartialView (Makecall.ascx)

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<AsyncCallTest.Models.SharepointModel>" %>
    <table border="1">
    <tr>
    <td><font color="Black">Folder Name</font></td>
    <td><font color="Black">Link</font></td>
    </tr>

    <tr>

    <% if (Model != null)
       {
           for (int fileCounter = 0; fileCounter < Model.FolderList.Count(); fileCounter++ )
           {
               foreach (var file in Model.FolderList[fileCounter].FolderFiles)
               {
           %>
            <td><font color="Black"> <%: file.FileName%></font></td>
            <td><font color="Black"> <a href ='<%: file.FileWebPath%>'><%: file.FileWebPath%></a></font></td>
             </tr>
           <%
               }
           }
       }

         %>

         </table>

1 Ответ

0 голосов
/ 10 ноября 2011

CDN были проблемой, поэтому я изменил

<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js" type="text/javascript" /> 
    <script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/MicrosoftMvcAjax.js" type="text/javascript"/> 
    <script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/MicrosoftMvcAjax.debug.js" type="text/javascript"/>

на

<script src="<%: Url.Content("~/Scripts/jquery-1.4.4.min.js") %>" type="text/javascript"></script>
    <script src="<%: Url.Content("~/Scripts/jquery.unobtrusive-ajax.js") %>" type="text/javascript"></script>
    <script src="<%: Url.Content("~/Scripts/jquery.validate.js") %>" type="text/javascript"></script>
    <script src="<%: Url.Content("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript"></script>
    <script src="<%: Url.Content("~/Scripts/MicrosoftMvcAjax") %>" type="text/javascript"></script>

Теперь это работает.Спасибо.Просто странно, что он работал во всем, кроме IPad Safari и Javascript был включен, так что можно подумать, что это сработало бы.

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