1

当 AJAX 调用在本地主机上正常工作时,什么可能会阻止 AJAX 调用在主机服务器上工作?我尝试从 AJAX 调用返回一个错误,但我得到的只是“未定义”。我认为没有调用实际的页面方法,因为我的日志中没有添加任何信息(并且我已经明确添加了一个调用)。我无法在本地机器上重现该问题,所以有人知道我应该研究的可能区域吗?

谢谢

4

2 回答 2

0

你的浏览器中有什么 URL,你的 Ajax 调用是什么 URL?浏览器具有不允许跨域 AJAX 调用的“安全”约束。例如,如果我正在加载本地文件:

http://localhost:20080/myCustomPage.html

在该页面中,我进行了 ajax 调用

http://search.twitter.com/search?q=test

我会从浏览器收到安全警告。根据您的浏览器,这可能会在底角 (IE) 中显示一个警告图标,或者在 javascript 日志 (firefox) 中显示一个错误。

在一个特定的情况下,有一种方法可以解决这个问题。这种情况是任何 GET 请求。要做到这一点而不是进行“ajax”调用,您需要包含一个标签。然后将读取并加载该脚本标签。这里的问题是调用现在需要包含一个“回调”方法,您可以在自己身边实现该方法,该方法会在调用结果中被调用。

因此,而不是像这样的回应:

{
    "first_name": "peter",
    "last_name": "parker"
}

你需要返回

myCallBackFunction({
    "first_name": "peter",
    "last_name": "parker"
});

此示例使用 JSON,但只要调用该函数,您就可以轻松使用 XML、HTML 或任何其他结果格式。

myCallbackFunction("INSERT RESPONSE TEXT HERE")

这种方法通常被称为JSONP,幸运的是,从客户端的角度来看,它在 jquery 等常见的 javascript 库中实现。如果您控制服务器端,则需要硬编码 callBackFunction 包装器,或公开允许客户端设置它的参数。不幸的是,如果您不拥有该库,除非该服务的所有者已经提供了该功能,否则您将无能为力。幸运的是,大多数 Web 2.0 服务都已经实现了该功能。

于 2010-04-23T02:25:36.203 回答
0

我已经设法修复它。在集成模式下运行 IIS7 时出现问题。我将所有模块从 to 和 my to 移到(也在该部分中)

希望对其他人有所帮助。

更多信息

于 2010-04-23T03:09:18.707 回答