3

在我正在构建的网站上,当您登录时(因为数据库在另一台服务器上),我使用json 填充来检查用户是否作为正确的凭据。

它运行完美(ie7、ie8 和 FF),直到我在chrome、safari 和 opera上尝试过它,这完全是一场灾难。

    $.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 和 opera 中不起作用,从未收到成功警报。

有谁知道如何解决这个问题?

谢谢。

4

2 回答 2

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&amp;callback=ws_results" />
   </head>
   <body />
</html>
于 2010-02-28T12:09:33.803 回答
0

问题出在html页面标题上,在进行ajax调用的“Thickbox”(jQuery Thickbox插件)中!

在这种情况下,Firefox 或 IE 不介意重复的标头,但 WebKit 引擎可以!

我只需要删除额外的标题,一切都回到了轨道上。

谢谢大家!

于 2010-03-05T01:09:56.323 回答