当本地主机正常工作时,什么可能阻止AJAX调用在主机服务器上工作?我尝试从AJAX调用返回一个错误,但我得到的只是'未定义'。我不认为实际的页面方法被调用,因为我的日志中没有添加任何信息(并且我明确添加了一个调用)。我无法在本地机器上重现问题,因此有人知道我应该查看的可能区域吗?AJAX调用适用于本地机器,不适用于主机
感谢
当本地主机正常工作时,什么可能阻止AJAX调用在主机服务器上工作?我尝试从AJAX调用返回一个错误,但我得到的只是'未定义'。我不认为实际的页面方法被调用,因为我的日志中没有添加任何信息(并且我明确添加了一个调用)。我无法在本地机器上重现问题,因此有人知道我应该查看的可能区域吗?AJAX调用适用于本地机器,不适用于主机
感谢
什么网址是在您的浏览器,而你的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服务您都会这样做,已经实现了该功能。
感谢您的回复。我的网址有“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
在生产版本中,您是否尝试进行跨域调用? – 2010-04-23 02:08:39
嗨。不,一切都托管在我的域名上。 .aspx在特定的代码隐藏中调用webmethod。 – XSL 2010-04-23 02:15:54