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