2013-06-13 3 views
-2

Как передать вызов, например:Передайте php-вызов переменной javascript?

http://localhost/conn.php?geotable=INFR&geomfield=the_geom&srid=&fields=&parameters=&orderby=&sort=&limit=&offset= 

в яваскрипт переменного? Результатом этого вызова является строка (строки формата geoJSON).

Пожалуйста, помогите, я не знаю, что попробовать больше!

+0

вы хотите, чтобы извлечь параметры URL из строки? –

+3

Я думаю, вам нужно объяснить себя лучше, вы хотите сохранить результат этого вызова переменной (например, ajax) или получить доступ к 'get'variables в URL-адресе с помощью javascript, как в php? –

+0

Да, я хочу сохранить результат этого вызова в переменной javascript. – boofighter

ответ

0

Если вы хотите, чтобы ваши переменные GET доступны в javascript, вы могли бы сделать что-то вроде этого.

<script> 
<?php 
echo 'var phpData = ' . json_encode($_GET); 
?> 
</script> 

Убедитесь, что этот код перед частью, где вы начинаете использовать javascript. Вы можете вызвать переменную в JavaScript, как это:

phpData.var 

Например, эта часть вашего получает geotable = инфр будет вызываться в JavaScript с использованием phpData.geotable

Надежда это помогает вам?.

+0

Я думаю, он хочет, чтобы содержимое JSON содержало URL-адрес, а не части строки запроса. –

+0

А я вижу, что он хочет вызвать URL-адрес, а затем снова передать возвращаемое значение в javascript. Ну, похоже, что conn.php - это местный скрипт, который он может применить к той же тактике. Или используйте запрос curl и поймайте результат, затем json закодирует результат в js-объект. – Michael

+0

Пожалуйста, прочитайте мой комментарий вверх. – boofighter

1

Существует много способов сделать это. Вот несколько вариантов:

(Примечание. Для целей демонстрации, эти примеры предполагают, что ваш PHP скрипт возвращает GeoJSON Spec Example Code)

  • AJAX: Для делать AJAX звонки, я рекомендую использовать библиотеку, например, jQuery, потому что это означает, что вам не нужно беспокоиться обо всех особенностях разных версий браузера. Если вы используете jQuery, вам нужно использовать функцию $.getJSON() (see docs for more examples). Ваш звонок может выглядеть следующим образом:

    var path = http://localhost/conn.php?geotable=INFR&geomfield=the_geom&srid=&fields=&parameters=&orderby=&sort=&limit=&offset= 
    
    var result; 
    $.getJSON(path, function(data) { 
        result = data; 
    }); 
    

    Это будет получать данные GeoJSON с сервера и скопировать его в переменной result.

  • Если вы можете изменить серверный скрипт, то простой способ сделать то, что вы хотите, вероятно, с JSONP. Измените код PHP на сервере, чтобы он принял параметр callback и возвращает данные JSON, завернутые внутри функции с этим именем. Например, если вы установите callback=process, сервер возвращает следующее: (. Обратите внимание, что это точно такие же данные, как образец связанного выше, только с process( перед ним и ); после него)

    process(
        { "type": "FeatureCollection", 
         "features": [ 
         { "type": "Feature", 
          "geometry": {"type": "Point", "coordinates": [102.0, 0.5]}, 
          "properties": {"prop0": "value0"} 
          }, 
        ..... 
        } 
    ); 
    

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

    <script> 
        var result; 
        function process(received) { 
         result = data; 
        } 
    </script> 
    <script src="http://localhost/conn.php?callback=process&geotable=INFR&geomfield=the_geom&srid=&fields=&parameters=&orderby=&sort=&limit=&offset="></script> 
    
+0

Хорошо, позвольте мне быть честным, я начинаю с javascript и php, и мне нужно сохранить результат этого вызова, который является некоторыми точками в формате geojson, что-то вроде этой коллекции функций: http://www.geojson.org/geojson-spec.html#id14 и сохранить эти данные в какую-то переменную, как это написано *** var result = {"type": "FeatureCollection", "features": [ {"type ":" Feature ", " geometry ": {" type ":" Point "," codes ": [102.0, 0.5]}, " properties ": {" prop0 ":" value0 "} }, ** * Так что текст должен храниться в переменном «результат», например. Этот текст является РЕЗУЛЬТАТОМ этого вызова. – boofighter

+0

@boofighter Я обновил свои примеры. –