【问题标题】:Unable to identify issue with Ajax call to Yii API getting no response headers无法识别对 Yii API 的 Ajax 调用没有响应标头的问题
【发布时间】:2012-10-19 12:44:01
【问题描述】:

概述

我目前正在开发一个 jQuery/HTML5 项目,该项目使用一系列图表显示 Web 性能数据,并使用内部 API 检索数据。该 API 由 Yii 提供支持,但我没有在开发它,所以我不能自己更改或试验它。

基本上,我希望有人可以帮助确定 API 是否是问题的根本原因,或者是否是我的 jQuery 中的 Ajax 不正确的问题。

我的应用程序经历的过程的一个小解释......

  1. 应用程序加载,使用用户详细信息通过 API 进行身份验证。从 API 接收 API 密钥。
  2. 检索密钥后,会进行多次调用以从 APi 检索数据以显示为 Web 性能数据。
  3. 在设定的时间间隔内,对数据库调用泛型以检查 API 密钥是否已过期。
  4. 如果密钥已过期,它会再次向 API 请求新的 API 密钥,如步骤 1 中所述。如果在获取 API 密钥时遇到任何问题,用户就会被踢出。
  5. 不包括获取数据的重启周期。

问题

所有的 Ajax 调用都是跨域的,因为项目和 API 都在不同的子域上。这些是使用 JSONP 和 jQuery 回调完成的。

我遇到的问题是,当我需要验证密钥是否有效时,如果它不再有效,API 会返回一个 401 错误,我的 Ajax 没有注册。如果我在 Firefox 中查看 API URL,我可以看到返回的 Json 数据,包含在回调中,但是当我检查 firebug 时,它说有请求,但没有响应。

基本上当 API 返回不是 200 OK 的数据时,它根本不会发送响应头。

但是,我在终端中使用 cUrl 手动调用 API,并收到了响应标头,以及在 Google Chrome 中。

如果有人能告诉我这是 Firefox/jQuery 的一个众所周知的问题,还是 Yii API 的问题,我将不胜感激。

【问题讨论】:

  • 你开启Jquery的跨域支持了吗?
  • 不知不觉,这是我需要在客户端或代码中设置的东西吗?

标签: php jquery ajax api yii


【解决方案1】:

尝试在你的 ajax 调用之前添加这个:

jQuery.support.cors = true; // force cross-site scripting in IE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2012-10-18
    相关资源
    最近更新 更多