jQuery UI选项卡ajax未从远程服务器加载

jQuery UI选项卡ajax未从远程服务器加载,jquery,asp.net-mvc-3,jquery-ui,tabs,Jquery,Asp.net Mvc 3,Jquery Ui,Tabs,我的MVC Razor应用程序使用带有Ajax的jQuery UI选项卡加载其中一个选项卡,当我从远程服务器访问应用程序时,与从本地开发环境访问应用程序时,我的行为不同 在本地运行,一切正常。“我的选项卡”调用一个控制器方法,该方法返回一个视图,该视图按预期呈现 但是,当我在生产服务器上运行它时,控制器不会向我的页面返回任何内容。我已经进行了诊断检查,可以验证是否调用了该方法,是否从我的数据库中提取了正确的数据,是否随返回视图一起发送了填充的ViewModel。。。呼叫我的控制器 但是,在客户端

我的MVC Razor应用程序使用带有Ajax的jQuery UI选项卡加载其中一个选项卡,当我从远程服务器访问应用程序时,与从本地开发环境访问应用程序时,我的行为不同

在本地运行,一切正常。“我的选项卡”调用一个控制器方法,该方法返回一个视图,该视图按预期呈现

但是,当我在生产服务器上运行它时,控制器不会向我的页面返回任何内容。我已经进行了诊断检查,可以验证是否调用了该方法,是否从我的数据库中提取了正确的数据,是否随返回视图一起发送了填充的ViewModel。。。呼叫我的控制器

但是,在客户端级别,没有HTML被传递回Javascript。alertui.panel.innerHTML;下面的行仅返回加载的图像html,而不返回任何视图

有人知道为什么在这两种情况下行为会不同吗

编辑:我有两个不同的远程服务器,一个是Dev,一个是Cert,两者都不能工作

谢谢

Javascript:

    var budgetPanelLoaded = false;

    $("#tabs").tabs();

    $("#tabs").bind("tabsselect", function (event, ui) {
        if ($(ui.tab).text() == "Budgets") {
            if (budgetPanelLoaded != true) {
                $(ui.panel).append("<img id='budgetsLoadingImage' src='/images/loading.gif' width='96' height='96' />");
            };
        };
    });

    $("#tabs").bind("tabsload", function (event, ui) {
        if ($(ui.tab).text() == "Budgets") {
            alert(ui.panel.innerHTML);
            $("#budgetsLoadingImage").remove();
            budgetPanelLoaded = true;
        };

    });

好吧,萤火虫来营救

原来服务器返回了一个500错误,但是jQuery正在清除这个错误,所以我什么也没看到。我必须调试Firebug才能看到它,这对我来说是新的,但很酷,希望我几个月前就知道Firebug


无论如何,最终的原因是我需要在我的Linq to SQL命令上使用一个Include,显然这在我的本地机器上是不必要的本地SQL isntance可能会使它变得不必要?但是,当我部署到网络中并且SQL数据库是远程的时,它需要这个选项。

我也遇到过类似的问题,并且发现了以下问题:

注: 如果您使用的是Windows2008r2,您使用的是IIS7.5,要使任何使用JSON的控件正常工作,您可能需要:

安装IIS HTTP重定向功能UI已更改,因此大多数引用都没有正确地引用其所在位置。请参阅服务器管理器,Web角色

运行:%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet\u regiis.exe-ir要正确注册IIS的.NET 4 64位framework,可能需要调整v4.x版本

为json设置mime类型

如果您是通过.DataSourcedataSource=>dataSource.Ajaxajax=>ajax获取数据,请选择。。。如果您使用web开发服务器在VS内部运行,请注意,部署到IIS时会出现问题。当Select尝试从引用的视图获取JsonResult时,即使在定义了json mime类型之后,Fiddler也会显示IIS返回404.0。由于ajax.Select的工作方式


解决此问题的最简单方法是在部署时将网站置于域根。

Firebug是一个救星。另外,Chrome的内置webdeveloper工具很好,我想Firebug就是基于它的?或者反过来呢?。但是我更喜欢FireFox,因为有更多的插件可以安装来帮助你更进一步。@Ben Finkel我对jQuery也有类似的问题。它在本地开发服务器上的MVC3网站上运行良好,但在生产服务器上运行失败。我正在使用jQuery lightbox为我的购物车和画廊页面使用jQuery。是否有任何我认为应该做的调整或配置?我建议最好使用Firebug并观察服务器和web浏览器之间的通信。您可能会惊讶地发现从服务器返回/发回的内容。@BenFinkel您应该将您的答案标记为答案。IE的F12开发者工具也会显示:单击网络选项卡,然后单击开始捕获。加载页面中的坏选项卡。结果将显示一个500。单击转到详细视图,然后单击Response Body选项卡查看错误详细信息。
    Function EditOrgBudgets(ByVal Orgid As Integer) As ActionResult
        Dim db As New charityContainer
        Dim o As Organization
        Dim ovm As OrganizationViewModel

        OpenContainer(db)

        'Load the organization from the database
        o = (From org In db.Organizations _
            Where org.Id = Orgid _
            Select org).FirstOrDefault()

        If (o Is Nothing) Then

            'Organization doesn't exist yet
            Return View("OrganizationNotCreated")
        Else

            'Create any empty budgets that need to be created
            CreateBudgetsForOrganization(o, db)


            o.OrganizationBudgets = (From ob In db.OrganizationBudgets _
                                     Where ob.OrganizationId = o.Id _
                                     Order By ob.Budget.Year Descending _
                                     Select ob).ToList()


            'Map it to the ViewModel
            ovm = AutoMapper.Mapper.Map(Of Organization, OrganizationViewModel)(o)

            Return View("OrganizationBudgets", ovm)
        End If

    End Function