我正在尝试使用jquery ajax()来调用mapquest api并且我一直收到以下错误:
Statuscode:400
"Illegal argument from request: Error parsing JSON from Request: A JSONObject text must begin with '{' at character 0 of , see http://www.mapquestapi.com/geocoding/ for details on correctly formatting locations."
这是我正在制作的jquery ajax调用:
$.ajax({
url: "http://www.mapquestapi.com/geocoding/v1/address?key=<mykey>",
dataType: 'json',
type: 'POST',
contentType:'json',
data: {json: {location: { "postalCode": "98765"}, options: { thumbMaps: false} } },
success: function(data) { log( data ) },
error: function(data) { log( 'error occurred - ' + zipCode + ' - ' + data ) }
});
我也试过jsonp
作为dataType,我无法使用任何东西。
网址方法工作正常,但捕获返回响应更加困难:
http://www.mapquestapi.com/geocoding/v1/address?key=<mykey>&location=89790
任何帮助都将不胜感激。
马特
答案 0 :(得分:1)
在传递位置信息时,您可能会有一组额外的括号。
试试这个:
$.ajax({ url: "http://www.mapquestapi.com/geocoding/v1/address?key=", dataType: 'json', type: 'POST', contentType:'json', data: {location: { "postalCode": "98765"}, options: { thumbMaps: false} }, success: function(data) { log( data ) }, error: function(data) { log( 'error occurred - ' + zipCode + ' - ' + data ) } });
答案 1 :(得分:0)
这真的是因为你的json并不是真正的json字符串。你不能只是像这样将JSONObject传递给url。你必须先将其字符串化。我遇到了和你一样的错误,在我将其字符串化之后,它就起作用了。它在IE7中不起作用,所以你必须使用JSON2使它与ie7兼容:在这里找到:json2
var key = <mykey>;
$.ajax({
url: "http://www.mapquestapi.com/geocoding/v1/address",
dataType: 'json',
type: 'POST',
contentType:'json',
data: {
key: decodeURIComponent(key),
json : JSON.stringify(
{
location: { "postalCode": "98765"}, options: { thumbMaps: false}
})
},
success: function(data) { log( data ) },
error: function(data) { log( 'error occurred - ' + zipCode + ' - ' + data ) }
});