Получение ошибки: SyntaxError: неожиданный токен: ':' вызов API Google Адресов [дубликат]

В вашем случае вы создаете массив в стеке, и как только вы покинете область действия, массив будет освобожден. Вместо этого создайте динамически выделенный массив и верните указатель на него.

char * returnArray(char *arr, int size) {
    char *new_arr = malloc(sizeof(char) * size);
    for(int i = 0; i < size; ++i) {
        new_arr[i] = arr[i];
    }
    return new_arr;
}

int main() {

    char arr[7]= {1,0,0,0,0,1,1};
    char *new_arr = returnArray(arr, 7);

    // don't forget to free the memory after you're done with the array
    free(new_arr);

}
3
задан John Conde 15 November 2011 в 16:39
поделиться

2 ответа

Из того, что я вижу из документации, API веб-службы Google Places делает не поддержку JSONP - только JSON. Ошибка, которую вы видите, заключается в том, что ответ - это просто JSON, но анализируется, как если бы это был JSONP, и это вызывает ошибку.

Проверьте API JavaScript Карт Google - он включает в себя библиотеку мест, которую вы может быть в состоянии использовать - см. google.maps.places.PlacesServices#search() .

AFAIK, похоже, сдвиг в сторону удаления поддержки JSONP - например, API геокодирования, используемый для поддержки JSONP (недокументированный) в v2, но уже не в v3. Кто-то предположил, что это может быть для того, чтобы побудить разработчиков использовать JavaScript API.

5
ответ дан no.good.at.coding 17 August 2018 в 23:21
поделиться
  • 1
    В Условиях использования API Карт Google требуется, чтобы API (включая различные веб-сервисы, такие как Геокодирование и Места), использовался в сочетании с картой Google ". Это означает, что при использовании сервисов на веб-странице (где JSONP полезен) вам нужно будет загрузить API в любом случае, чтобы отобразить карту, поэтому нет причин не использовать соответствующие классы API для доступа к этим сервисам , Во многих случаях это проще, так как вам не нужно создавать URL-адреса URL-адресов, а результаты конвертируются в соответствующие объекты API Карт (например, google.maps.LatLng) для вас. – Thor Mitchell 24 May 2011 в 02:07
  • 2
    @Thor Полезно знать, спасибо! – no.good.at.coding 24 May 2011 в 02:29
  • 3
    @Thor, я не думаю, что это правда, поскольку они выпущены публично. Документы теперь заявляют ... «Если ваше приложение отображает данные API« Места на странице »или« Просмотр », на котором также не отображается карта Google, вы должны показать« Powered by Google ». логотип с этими данными. & quot; – hemmeter 25 May 2011 в 18:49
  • 4
    Учитывая то, что я сказал выше, о том, что вам не нужна карта, как можно вызвать веб-службу из JavaScript с учетом междоменных проблем? Только серверные вызовы? – hemmeter 25 May 2011 в 18:50
  • 5
    @hemmeter Да, к сожалению (AFAIK) единственными вариантами для междоменных запросов являются JSONP, используя прокси или доступ к серверному коду для использования заголовков HTTP-разрешений. В этом случае остается только опция прокси. – no.good.at.coding 26 May 2011 в 02:05

Ниже приведено не прямое решение. Но, вот как я начал работать ...

Поскольку JSONP не поддерживается (и я не понимал, как клиентский код должен использовать этот API в любом случае), решение должно проксировать его через ваш сервер ... Если вы используете рельсы на стороне сервера, ниже может работать для вас:

class PlacesController < ApplicationController
    def autocomplete
        # Using Google Web Services
        # https://code.google.com/apis/console
        url = "https://maps.googleapis.com/maps/api/place/autocomplete/json"
        _params = {
            :key => "<<< YOUR KEY >>>",
            :types => "geocode",
            :sensor => (params[:sensor] or false),
            :input => params[:q]
        }
        ans = %x{curl -G --data-urlencode #{_params.map{|k,v| "#{k}=\"#{v}\""}.join(" --data-urlencode ")} "#{url}"}
        ans = ActiveSupport::JSON.decode(ans)
        render :json => ans
    end
end

PS: Чтобы сгенерировать ключ API, используйте https: // код .google.com / APIs / консоль

4
ответ дан Rafael Xavier 17 August 2018 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: