0

我正在尝试使用 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 ,但我无法正常工作。

url 方法可以正常工作,但捕获返回响应更加困难:

http://www.mapquestapi.com/geocoding/v1/address?key=<mykey>&location=89790

任何帮助,将不胜感激。

马特

4

2 回答 2

1

看起来您在传递位置信息时可能有一组额外的括号。

尝试这个:

    $.ajax({
    网址:“http://www.mapquestapi.com/geocoding/v1/address?key=",
    数据类型:'json',
    类型:'POST',
    内容类型:'json',
    数据:{位置:{“postalCode”:“98765”},选项:{thumbMaps:false}},
    成功:函数(数据){日志(数据)},
    错误:函数(数据){日志('发生错误-'+邮政编码+'-'+数据)}
});
于 2012-09-25T22:23:07.003 回答
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 ) }
});
于 2014-03-03T00:26:33.813 回答