我在这里运行一个奇怪的问题。我有让jquery ajax调用Web服务并使用jquery动态添加控件的代码。一切工作正常我的开发机器运行IIS 5.1,但不是部署到IIS 6时。我使用VS2010/ASP.Net 4.0,C#,jQuery 1.4.2和jQuery UI 1.8.1。我为每个使用相同的浏览器。jQuery/AJAX正在处理IIS5.1但不处理IIS6
它部分虽然工作。代码会将控件添加到页面,但直到点击它们才会显示(尽管它们不可见)。我认为这是一个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”我复制了一个应用程序/ javascript的测试调用。
@Gaby:我很清楚服务器与CSS或JavaScript无关的事实,但是,这是代码之间的唯一区别,它不能工作。
我的本地开发机器(IIS 5)和服务器(iis 6)之间的所有jquery/css文件都是相同的。
@jaymz:我会给小提琴尝试看看是否有区别。我正在使用IE8,但它不会进入兼容模式。
解决方案:(Compatbility Mode!) 在检查Fiddler中的所有内容并找不到任何区别后,我在Firefox中尝试了它,它在哪里运行。让我思考,果然,我错了,IE浏览器正在进入兼容模式。显然默认情况下,它将在Intranet上使用兼容模式,但不使用localhost(恰好是IIS的不同版本)。我试过IE7并得到了同样的东西。我需要更改我的代码以确保它可以在IE7上运行。
2010-06-07
Mikejh99
+0
CSS与服务器技术无关..只有浏览器支持。 JavaScript也与服务器无关,只处理浏览器..你使用任何URL重写过滤器?并确保CSS和JS都被传递到浏览器! –
2010-06-07 21:42:30
+0
您是否尝试过使用萤火虫检查服务器每次返回的内容?我想这应该是一个字符编码问题;你正在指示服务器使用utf-8,也许你没有正确的设置你的IIS6来正确处理utf-8,它不是理解通过'post'接收到的输入,或者不能正确地发送编码为utf的结果-8,你的浏览器不理解它收到的内容。 –
2010-06-07 21:49:57