Javascript AJAX请求返回200OK,但尽管返回的数据是JSON,但仍然失败

Javascript AJAX请求返回200OK,但尽管返回的数据是JSON,但仍然失败,javascript,ajax,json,header,Javascript,Ajax,Json,Header,编辑:在我的例子中,它没有返回到正确信息的原因是我试图使用JSONP连接到CORS数据设置,而服务器没有为我的特定计算机访问设置它。我需要与某人交谈并调整服务器配置文件的权限。这就是真正发生的事情,我无法理解,因为我认为CORS和JSONP是同义词,但事实上它们的执行方式不同,需要设置某些服务器权限 简介:我有一个$.ajax请求,它ping服务器查找数据。它失败了,但数据显示成功了 进入网络,它显示了响应。我想要它。这是我抓不住的 错误:表示失败,但返回: {"readyState":4,"s

编辑:在我的例子中,它没有返回到正确信息的原因是我试图使用JSONP连接到CORS数据设置,而服务器没有为我的特定计算机访问设置它。我需要与某人交谈并调整服务器配置文件的权限。这就是真正发生的事情,我无法理解,因为我认为CORS和JSONP是同义词,但事实上它们的执行方式不同,需要设置某些服务器权限

简介:我有一个$.ajax请求,它ping服务器查找数据。它失败了,但数据显示成功了

进入网络,它显示了响应。我想要它。这是我抓不住的

错误:表示失败,但返回:

{"readyState":4,"status":200,"statusText":"success"}
这意味着在客户端的某个地方,它被标记了。答复是:

["Asset","AssetElementDefMap","AssetFile","AssetFileCategory","AssetFileCategoryObjectMap","AssetFilesFieldMap","AssetFilesReportMap","AssetTree","AssetType","BicUrl","CancelledUpload","CurrentValue","DataTypeInstanceMembers","DataTypeInstances","DataTypeMembers","DeviceDatabase","ElementDef","ElementDefEnvironment","ElementDefFormMap","ElementDefManual","ElementDefStructUnit","ElementDefStructUnitList","Field","FieldChoice","FieldFormScriptMap","FileType","FileTypeAssetFileCategoryMap","ForgotPassword","Form","FormScriptFunction","FormType","in_id","InspectionType","Inspector","MobileFormOSMap","MobileReportTypeFormMap","MobileReportTypeFormTypeMap","ProfileProperty","Report","ReportSubAssetMap","ReportType","ReportTypeAssetTypeMap","ReportTypeInspectionTypeMap","ReportValue","WorkingSet"]
Content-Type:application/json
["Asset","AssetElementDefMap",…,"WorkingSet"]
标题为:

**Request**
URL:http://xx.xxx.xx.x/mas3/DataSources/inspecttech.inspecttech/Schema/Classes/?callback=jQuery172021616409649141133_1374243099954&_=1374243124683
Request Method:GET
Status Code:200 OK
**Request Headers**
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Authorization:Basic bmRvdG1vYnguaGluc3BlY3R0ZWNoOjU0NjdjZTg2ZTdiMzc4MTNjYmQ0ZGQ3MTM1MDJkOGVjNDNiYjUwMTU2NzJiNzAxNDczMDRjYzE5YjA5ZGIyN2EyODNiMzliNmY4YzIyN2UxNjY1MDk5NDcxYzBjOTFlODZhN2EzOTliZTgzMjliNGY1MzFjOWZhYWI3YjNkMjg1
Connection:keep-alive
Host:10.224.65.5
Referer:http://localhost:3033/BentleyFormIntegrationFrameset.aspx
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36
**Query String Parameters**
callback:jQuery172021616409649141133_1374243099954
_:1374243124683
**Response Headers**
Cache-Control:no-cache
Content-Language:en-US
Content-Length:801
Content-Type:application/json; charset=utf-8
Date:Fri, 19 Jul 2013 14:12:03 GMT
Expires:-1
Mas-License-Error-Id:NoClientLicense
Mas-License-Error-Message:Client's license is invalid.
Pragma:no-cache
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
编辑:AJAX请求:

var u = "myusername";
var p = "mypass";
var up = u + ":" + p;
$.ajax({
    type: "GET",
    url: "http://xx.xxx.xx.x/mas3/DataSources/inspecttech.inspecttech/Schema/Classes/",
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    headers: {Authorization: "Basic "+up},
    success: function (r) {
        alert("Success: " + JSON.stringify(r));
    },
    error: function (r) {
        alert("Failure: " + JSON.stringify(r));
    }
});
答复是:

["Asset","AssetElementDefMap","AssetFile","AssetFileCategory","AssetFileCategoryObjectMap","AssetFilesFieldMap","AssetFilesReportMap","AssetTree","AssetType","BicUrl","CancelledUpload","CurrentValue","DataTypeInstanceMembers","DataTypeInstances","DataTypeMembers","DeviceDatabase","ElementDef","ElementDefEnvironment","ElementDefFormMap","ElementDefManual","ElementDefStructUnit","ElementDefStructUnitList","Field","FieldChoice","FieldFormScriptMap","FileType","FileTypeAssetFileCategoryMap","ForgotPassword","Form","FormScriptFunction","FormType","in_id","InspectionType","Inspector","MobileFormOSMap","MobileReportTypeFormMap","MobileReportTypeFormTypeMap","ProfileProperty","Report","ReportSubAssetMap","ReportType","ReportTypeAssetTypeMap","ReportTypeInspectionTypeMap","ReportValue","WorkingSet"]
Content-Type:application/json
["Asset","AssetElementDefMap",…,"WorkingSet"]

这不是,而是简单的JSON(缺少“填充”,即回调函数)。由于请求是跨域的,因此您需要访问它,并且即使资源加载时状态为
200OK
也会以脚本的形式执行失败。

您可以将代码发布到发出AJAX请求的位置吗?您正在进行JSONP调用吗<代码>回调:jquery1721616409649141133_1374243099954是的,服务器在其他地方,因此它必须是一个JSONP调用。这很奇怪,因为它在网络中正确地返回响应,在客户端或其他地方似乎失败了,因为一切似乎都是从服务器正确地返回的。?JSONP绕过SOP,允许对其他域进行类似AJAX的调用。啊,好的。我必须和服务器人员谈谈,看看我们能做些什么。是的,要么他们启用CORS或JSONP,要么你必须使用代理服务器。我如何定义标准CORS头?服务器团队说他们用的就是这个。