无法识别Ajax调用Yii API的问题,没有响应头

时间:2012-10-19 12:44:01

标签: php jquery ajax api yii

概述

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

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

我的申请流程的一个小解释......

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

    所有Ajax调用都是对跨域进行的,因为项目和API都位于不同的子域中。这些是使用JSONP和jQuery回调完成的。

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

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

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

    如果有人可以告诉我这是否是Firefox / jQuery的一个众所周知的问题,或者如果这是Yii API的问题我会非常感激。

1 个答案:

答案 0 :(得分:-1)

尝试在ajax调用之前添加:

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