首先:我搜索了我的错误并找到了一些有用的提示,但他们并没有解决我的错误。在大多数问题中,问题是无效的json响应。
我通过coffeescript向Google Maps Service提出Ajax请求:
console.log 'widget ready - make request'
distrequest = $.ajax 'https://maps.googleapis.com/maps/api/distancematrix/json',
type: 'GET'
data:
origins: 'London',
destinations: 'Berlin',
language: 'de-DE',
key: 'ACTUALGOOGLEKEY'
#dataType: 'json' #tried to comment this out - same error
error: (jqXHR, textStatus, errorThrown) ->
console.log "Ajax error " + textStatus + " " + errorThrown
success: (data, textStatus, jqXHR) ->
console.log "success"
console.log data
当我检查我的控制台输出时,我看到widget ready - make request
已打印,然后:Ajax error error
当我通过firefox开发者工具检查我的网络时,我看到以下内容:
Method: GET
Status: 200
File: json?origins=...
Type: json
Response: {
"destination_addresses" : [ "London" ],
"origin_addresses" : [ "Berlin" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "24,7 km",
"value" : 24732
},
"duration" : {
"text" : "19 Minuten",
"value" : 1146
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
首先 - 我假设google api的json形式良好。我无法看到任何错误,我没有得到解析错误,我的网络控制台firefox识别出json类型并向我显示(在我看来)一个有效的json对象。 不知怎的,Ajax错误事件被解雇了 - 但我不知道为什么,而且errorThrown根本没用。
很抱歉,如果这是重复的 - 任何想法? (我实际上更改了Origin和Destination以及关于隐私的Google API Key。返回的值是我的请求的正确信息 - 谷歌地图不会认为你可以在19分钟内从伦敦到柏林)
编辑:dataType:' text'不工作错误方法
中的jqXHR.responseText为空edit2:我将以下代码添加到我的错误函数中:
console.debug(jqXHR.responseText)
console.log "Response Headers "+jqXHR.getAllResponseHeaders()
console.log "Status "+jqXHR.status
console.log "Status Text "+jqXHR.statusText
它给了我一个statusText error
,一个空的Header和responseText以及一个状态代码0
关于这个答案https://stackoverflow.com/a/14507670/5119359,它可能与CORS有关吗? 但是我会获得JSON对象而不是我的网络firefox开发人员控制台吗?
答案 0 :(得分:0)
从其他来源发送请求我收到回复:$("option[name = '" + name + "']").attr('selected','selected');
我认为这取决于您执行Ajax请求的上下文。 浏览器默认禁用CORS以防止任何数据窥探。我想这是在Firefox开发中启用的,因此请求成功完成。
我不确定您运行上述代码的上下文。如果它在Node中执行的设置与我相同,那么添加设置Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
就足够了。
$.support.cors = true