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

Php 无法识别对Yii API的Ajax调用没有响应头的问题,php,jquery,ajax,api,yii,Php,Jquery,Ajax,Api,Yii,概述 我目前正在从事一个jQuery/HTML5项目,该项目使用一系列图表显示web性能数据,并使用内部API检索数据。这个API是由Yii提供支持的,但我没有在开发它,所以我不能自己更改或试验它 基本上,我希望有人能帮助确定API是问题的根本原因,还是jQuery中的Ajax不正确的问题 对我的申请过程的一个小说明 应用程序加载,使用用户详细信息通过API进行身份验证。从API接收API密钥 检索完密钥后,会进行多次调用,从APi检索数据,以显示为web性能数据 在设置的时间间隔内,将向数据库

概述

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

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

对我的申请过程的一个小说明

  • 应用程序加载,使用用户详细信息通过API进行身份验证。从API接收API密钥
  • 检索完密钥后,会进行多次调用,从APi检索数据,以显示为web性能数据
  • 在设置的时间间隔内,将向数据库调用泛型以检查API密钥是否已过期
  • 如果密钥已过期,它会向API发出另一个请求,要求获得新的API密钥,如步骤1所述。如果在获取API密钥时遇到任何问题,则用户将被解雇
  • 重新启动循环,不包括获取数据
  • 问题

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

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

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

    然而,我已经在终端中使用cUrl手动调用了API,并收到了一个响应头以及googlechrome


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

    在ajax调用之前尝试添加以下内容:

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

    你打开Jquery的跨域支持了吗?我不是有意的,这是我需要在客户端或代码中设置的吗?