【问题标题】:jQuery/AJAX is working on IIS5.1 but not IIS6jQuery/AJAX 在 IIS5.1 上工作,但不在 IIS6 上
【发布时间】:2010-06-09 00:27:37
【问题描述】:

我在这里遇到了一个奇怪的问题。我有代码使 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”我复制了一个包含 application/javascript 的测试调用。

@Gaby:我很清楚服务器与 CSS 或 javascript 无关这一事实,但是,这是有效和无效的代码之间的唯一区别。

我的本​​地开发机器 (IIS 5) 和服务器 (iis 6) 之间的所有 jquery/css 文件都是相同的。

@jaymz:我会试试 fiddler 看看是否有区别。我正在使用 IE8,但它不会进入兼容模式。

解决方案:(兼容模式!) 在 Fiddler 中检查了所有内容并没有发现任何差异后,我在 Firefox 中尝试了它,它在那里工作。让我开始思考,果然,我错了,IE 正在进入兼容模式。显然默认情况下它会在内网上使用兼容模式,而不是 localhost(恰好是不同版本的 IIS)。我尝试了 IE7 并得到了同样的结果。我需要更改我的代码以确保它也适用于 IE7。

【问题讨论】:

  • CSS 与服务器技术无关 .. 仅与浏览器支持有关。 Javascript 也与服务器无关,只与浏览器打交道。您是否使用任何 URL 重写过滤器?并确保 CSS 和 JS 都被传递到浏览器!
  • 你有没有试过用firebug来检查每次服务器返回的内容?我想这应该是字符编码问题;您正在指示服务器使用 utf-8,可能您的 IIS6 上没有正确的设置来正确处理 utf-8,并且它要么不理解通过 post 接收的输入,要么无法发送正确编码为 utf 的结果-8,并且您的浏览器不理解它接收到的内容。

标签: asp.net jquery ajax iis


【解决方案1】:

您是否使用跟踪器运行请求?尝试在 IE 中使用 Fiddler,看看返回的标头/内容是否与 2 个不同的服务器不同。

在我的脑海中,我只能认为 IE(如果是 IE8,你没有提到你使用的是什么浏览器),当它看到 IIS 5 时使用的是兼容模式,而不是 IIS 6。我可能会解决这个问题,但标题应该让您更多地了解不同之处。

【讨论】:

  • +1 提供有关 IE 如何让事情变得可怕的见解。我可以想象自己正在处理由这种情况引起的场景并且(不知道这种可能性)只是绝望地拉扯我的头发!
  • 它是使用兼容模式,不是因为服务器的版本,而是因为它在内网而不是本地机器上。你让我走上了正确的道路,提琴手确认所有文件对我来说都是一样的。 !
【解决方案2】:

仔细检查您是否已使用 IIS 6 将所有内容部署到服务器上 例如jQuery 1.4.2 和 jQuery UI 1.8.1 等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多