我在这里遇到一个奇怪的问题。我有代码使jquery ajax调用Web服务并使用jquery动态添加控件。在运行IIS 5.1的开发机器上一切正常,但在部署到IIS 6时没有。我正在使用VS2010 / ASP.Net 4.0,C#,jQuery 1.4.2和jQuery UI 1.8.1。我为每个人使用相同的浏览器。
部分虽然有效。代码会将控件添加到页面中,但在我单击它们之前它们是不可见的(尽管它们不可见)。我认为这是一个CSS问题,但风格也在那里。
ajax调用如下所示:
$.ajax({
url: "/WebServices/AssetManager.asmx/Assets",
type: "POST",
datatype: "json",
async: false,
data: "{'q':'" + req.term + "', 'type':'Condition'}",
contentType: "application/json; charset=utf-8",
success: function (data)
{
res($.map(data.d, function (item)
{
return {
label: item.Name,
value: item.Name,
id: item.Id,
datatype: item.DataType
}
}))
}
})
更改内容类型会导致自动填充失败。我检查了四倍,所有路径都正确,IIS中没有启用文档页脚,我没有使用IIS压缩。
任何想法为什么页面将在IIS 5中正常显示并正常工作,但仅部分在IIS 6中? (如果它完全失败了,那就更有意义了!)。它是jQuery还是CSS问题?
编辑:我正在使用“contentType:”application / json;“charset = utf-8”我复制了一个有app / javascript的测试调用。
@Gaby:我很清楚服务器与CSS或javascript无关,但是,这是代码之间的唯一区别。
我的本地开发机器(IIS 5)和服务器(iis 6)之间的所有jquery / css文件都是相同的。
@jaymz:我会给小提琴手试试看是否有区别。我正在使用IE8,但它没有进入兼容模式。
解决方案:(兼容性模式!) 在检查了Fiddler中的所有内容并发现没有差异之后,我在Firefox中尝试了它,它在那里工作。让我思考,当然,我错了,IE WAS进入兼容模式。显然,默认情况下它将在Intranet上使用兼容模式,但不使用localhost(恰好是IIS的不同版本)。我试过IE7并得到了同样的东西。我需要更改我的代码,以确保它也适用于IE7。
答案 0 :(得分:2)
您是否通过跟踪器运行请求?尝试在IE中使用Fiddler,看看标题/内容的返回方式是否与2个不同的服务器不同。
在我的头脑中,我只能认为IE(如果它是IE8,你没有提到你正在使用的浏览器),在看到IIS 5时使用的是Compatability模式,而不是IIS 6。可能是出路,但标题应该让你更多地了解不同的东西。
答案 1 :(得分:0)
仔细检查是否已使用IIS 6将所有内容部署到服务器上 例如jQuery 1.4.2和jQuery UI 1.8.1等