在我正在建设的网站上, 当您登录时(因为数据库位于其他服务器上), 我使用 json padding 来检查用户是否是正确的凭据。
它正在完美无缺(ie7,ie8& FF),直到我在 chrome,safari&歌剧这是一场彻底的灾难。
$.ajax({
type: "GET",
dataType: "jsonp",
url: "http://someurl.com",
data: aRequestData,
cache: false,
error: function (XMLHttpRequest, textStatus, errorThrown) {
// typically only one of textStatus or errorThrown
// will have info
alert("Error occured textStatus=" + textStatus + " errorThrown=" + errorThrown);
},
success: function(data) {
alert('success');
}
});
简单明了,它可以在浏览器窗口中运行,但令我惊讶的是它在chrome,safari&歌剧,从来没有成功的警报。
有谁知道如何解决这个问题?
感谢。
答案 0 :(得分:1)
您是否尝试过使用Safari和Chrome内置的开发人员工具来检查您的请求是否收到了HTTP状态代码为200的回复?
在Chrome中,您可以从“查看”菜单访问这些工具,选择“资源”标签以查看所有请求。我认为在使用Safari时,您需要在某些设置中激活这些工具。
你也可以尝试创建没有jQuery的版本来排除那里出现的错误,如果你没有从你的调用中获得状态200我认为jQuery将失败而不调用任何错误函数,使用JSONP与jQuery的文档不是关于错误处理非常简洁。
创建一个包含以下内容的已修改版本的html文件,并将其加载到您的浏览器中:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title />
<script type="text/javascript">
function ws_results(obj) {
alert(obj);
}
</script>
<script type="text/javascript" src="http://someurl.com?foo=bar&callback=ws_results" />
</head>
<body />
</html>
答案 1 :(得分:0)
问题留在html页面标题上,在“Thickbox”(jQuery Thickbox插件)中进行了ajax调用!
在这种情况下,Firefox或IE不介意重复的标题,但WebKit引擎会这样做!
我只需删除多余的标题,一切都回到了正轨。
谢谢大家!