2010-04-23 290 views
0

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

感谢

+0

在生产版本中,您是否尝试进行跨域调用? – 2010-04-23 02:08:39

+0

嗨。不,一切都托管在我的域名上。 .aspx在特定的代码隐藏中调用webmethod。 – XSL 2010-04-23 02:15:54

回答

0

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

希望能帮助其他人。

More info

0

什么网址是在您的浏览器,而你的Ajax调用打什么网址?浏览器有'安全'限制,不允许跨域AJAX调用。因此,举例来说,如果我加载本地文件:

http://localhost:20080/myCustomPage.html 

和页面内,我做出

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

Ajax调用我会得到来自浏览器的安全警告。根据您的浏览器,这可能会显示在底部(IE)的警告图标或JavaScript日志(firefox)中的错误。

有一种方法可以在一种特定情况下解决此问题。这种情况是任何GET请求。要做到这一点,而不是做一个'阿贾克斯'的电话,你包括一个标签。该脚本标签将被读取并加载。这里的问题是,呼叫现在需要包含一个“回调”方法,您可以在您的身边执行该方法,通过调用的结果调用该方法。

因此,而不是像一个响应:

{ 
    "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服务您都会这样做,已经实现了该功能。

+0

感谢您的回复。我的网址有“http://www.mydomain.com/mypage.aspx”,aspx页面有http://www.mydomain.com/mypage.aspx/mymethod或简单的mypage.aspx/mymethod(我试过)。我正在运行Chrome,但即使在IE中,也没有显示错误 – XSL 2010-04-23 02:46:40

相关问题