AJAX调用适用于本地计算机,而不适用于主机

时间:2010-04-23 02:07:06

标签: asp.net ajax undefined pagemethods host

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

由于

2 个答案:

答案 0 :(得分: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服务都可以实现这样的功能。

答案 1 :(得分:0)

我设法解决了这个问题。在集成模式下运行IIS7时出现问题。我将所有模块从我和我的所有模块移动到(也在该部分)

希望能帮助其他人。

More info