我的MVC Razor应用程序使用jQuery UI选项卡和Ajax来加载其中一个选项卡,并且当我从远程服务器访问我的应用程序时与我的本地开发环境。jQuery UI选项卡ajax不从远程服务器加载
本地运行,一切正常。我的选项卡调用一个控制器方法,该方法返回一个视图,并按预期呈现该视图。
但是,当我将其从生产服务器上运行时,控制器不会将任何内容返回到我的页面。我已经进行了诊断检查,并且可以验证该方法正在被调用,正在从我的数据库中提取正确的数据,并且正在发送已填充的ViewModel以及我的控制器的“返回视图...”调用。
但是,在客户端级别,没有HTML被传回给Javascript。 “alert(ui.panel.innerHTML);”下面的行只返回加载图像的HTML和没有被返回的视图。
有没有人知道为什么这两种情况下的行为会有所不同?
编辑:我有两个不同的远程服务器,开发人员和证书,都没有工作。
谢谢!
的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;
};
});
和控制器:
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
Firebug是一个救星。此外,Chrome的内置web开发工具很好(我认为Firebug是基于它的?或者相反?)。但我更喜欢FireFox,因为您可以安装更多的插件来进一步帮助您。 – Flater
@Ben Finkel我遇到了类似jQuery的问题。它在本地开发服务器上的MVC3网站上运行得非常好,但无法在生产服务器上运行。我正在使用jQuery购物车和使用jQuery lightbox的图库页面。是否有任何调整或配置,通过我的脑海中,我应该做的? – user1079650
我可以推荐的最好方法是使用Firebug并观察您的服务器和Web浏览器之间的通信。您可能会惊讶地发现从服务器返回/发回的内容。 –