jQuery: как превратить этот URL в запрос GET - PullRequest
2 голосов
/ 07 декабря 2011

Я просто бездельничаю с Factual API, но я не совсем понимаю, как представить URL как запрос get.Вот URL, который я хочу превратить в jQuery get:

http://api.factual.com/v2/tables/7HOTBC/read?APIKey=SoX1rlj4x8VfRfvqnnehVH5ObpkHJc0kIzloTtxor5gyrHG5c3EySCTTcErCyRYO&filters={"category":{"$bw":"Arts%2C%20Entertainment%20%26%20Nightlife%20%3E%20Bars"},"latitude":{"$blank":false},"longitude":{"$blank":false},"$search":["London"],"$loc":{"$within_dist":[51.5149943,-0.0638818,1000]}}

Это код, который я написал для этого:

    var factualKey = "SoX1rlj4x8VfRfvqnnehVH5ObpkHJc0kIzloTtxor5gyrHG5c3EySCTTcErCyRYO";

    $(document).ready(function(){

        // initialise google maps
        initializeGoogleMaps();

        // make a get request to the factual api
        $.get(
                "http://api.factual.com/v2/tables/7HOTBC/read",
                { APIKey : factualKey,
                  filters : { category : { $bw : "Arts, Entertainment & Nightlife > Bars" },
                              latitude : { $blank : false },
                              longitude : { $blank : false },
                              $search : "[\"London\"]",
                              $loc : { $within_dist : [51.5149943,-0.0638818,1000] }
                  }
                },
                function(responseData){
                    alert("SUCCESS");
                },
                "json"
        );
    });

Когда я смотрю в firebug, этокак получился адрес моего запроса:

http://api.factual.com/v2/tables/7HOTBC/read?APIKey=SoX1rlj4x8VfRfvqnnehVH5ObpkHJc0kIzloTtxor5gyrHG5c3EySCTTcErCyRYO&filters[category][%24bw]=Arts%2C+Entertainment+%26+Nightlife+%3E+Bars&filters[latitude][%24blank]=false&filters[longitude][%24blank]=false&filters[%24search]=[%22London%22]&filters[%24loc][%24within_dist][]=51.5149943&filters[%24loc][%24within_dist][]=-0.0638818&filters[%24loc][%24within_dist][]=1000

... что явно неверно!

А вот ответ от Factual API:

{"version":"2","status":"error","error":"Your filters parameter cannot be parsed. Please see http:\/\/wiki.developer.factual.com\/Server-API for documentation.","error_type":"Api::Error::InvalidArgument"}

Может кто-нибудь сказать мне, что я не сделал правильно в своем коде?Должен ли я кодировать данные, которые я передаю, как часть запроса get?Или я что-то пропустил?

Ответы [ 3 ]

2 голосов
/ 07 декабря 2011

Вот как я получил успешную строку запроса, используя ваш объект.

$.param({ APIKey : factualKey,
          filters : JSON.stringify({ category : { $bw : "Arts, Entertainment & Nightlife > Bars" },
                      latitude : { $blank : false },
                      longitude : { $blank : false },
                      $search : "[\"London\"]",
                      $loc : { $within_dist : [51.5149943,-0.0638818,1000] }
          })
});

То же, что вы делаете, за исключением того, что я JSON.stringify фильтры и $.param всего этого.

Не уверен, нужен ли $.param.Возможно, это делает jQuery.

Также не уверен, что вы столкнетесь с теми же проблемами политики происхождения.

0 голосов
/ 07 декабря 2011
var factualKey = "SoX1rlj4x8VfRfvqnnehVH5ObpkHJc0kIzloTtxor5gyrHG5c3EySCTTcErCyRYO";

$(document).ready(function(){

    // initialise google maps
    initializeGoogleMaps();

    // make a get request to the factual api
    $.getJSON(
            "http://api.factual.com/v2/tables/7HOTBC/read",
            { APIKey : factualKey,
              filters : JSON.stringify({ category : { $bw : "Arts, Entertainment & Nightlife > Bars" },
                          latitude : { $blank : false },
                          longitude : { $blank : false },
                          $search : "[\"London\"]",
                          $loc : { $within_dist : [51.5149943,-0.0638818,1000] }
              })
            },
            function(data){
                console.log(data);
            }
    );
});
0 голосов
/ 07 декабря 2011

Вы должны использовать правильную функцию для jQuery для задания:

$. GetJSON ()

Данные, отправляемые на сервер, добавляются к URL-адресу как запрос. строка. Если значение параметра данных является объектом (картой), это преобразуется в строку и кодируется в URL, прежде чем он добавляется к URL.

Когда ваши данные в формате JSON становятся искаженными ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...