强制unescapeing ajax查询参数

时间:2013-06-06 23:27:19

标签: javascript jquery ajax urlencode url-encoding

我正在做什么

我正在构建对服务的查询。我使用ajax查询服务并在JSON中获取响应。

我正在查询Google地图API服务。 Reverse Geocoding

以下是一个示例查询:

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false

您可以看到查询参数为latlngsensor

latlng查询参数中有一个逗号。

让我们看一些代码

// Some vars
var googleEndpoint = "http://maps.googleapis.com/maps/api/geocode/json";

// Bind handler to form submission
$('#theQuery').submit(function() {
    var lat = $("#lat").val();
    var _long = $("#long").val();

    // Construct Query
    $.get(googleEndpoint, { sensor: true, latlong: lat + ',' + _long }, function (data) {
            console.log(data);
        });
    return false;
});

如果我运行查询,我的查询如下所示:

http://maps.googleapis.com/maps/api/geocode/json?sensor=true&latlong=44%2C44

我的想法

您可以看到逗号是%2C。我知道这是因为encodeURIComponent在jquery构建查询字符串时调用了参数,但我不知道如何标记该逗号以便它不会被编码。我试过unescape()

我知道我在这里遗漏了一些东西,任何帮助

2 个答案:

答案 0 :(得分:2)

您可以尝试使用

encodeURI()

它不会逃脱逗号

答案 1 :(得分:0)

$.ajax({
        type: "GET",
        url: "https://maps.googleapis.com/maps/api/elevation/json",
        contentType: "text/plain; charset=UTF-8",
        data:
            "path=36.578581,-118.291994&samples=3"
    });

我的代码工作正常,希望能帮到你!

https://maps.googleapis.com/maps/api/elevation/json?path=36.578581,-118.291994|36.23998,-116.83171&samples=3&key=YOUR_API_KEY