POST-запрос для строк UPDATE

Я новичок в javascript, поэтому мне нужна помощь, чтобы создать способ перетаскивания маркеров геокодирования, чтобы разрешить интерактивное изменение адресов. Я считаю, что это возможно, обновив строки столбца LOCATION.

Первым шагом для этого является «отправка» POST-запроса, верно? Итак, я хотел бы спросить, может ли кто-нибудь показать мне пример, потому что я понятия не имею, как написать и поместить этот запрос POST в свой код!


person Daniel Montenegro    schedule 08.04.2012    source источник


Ответы (3)


Чтобы обновить столбец, вы должны выполнить POST в Fusion Tables API, но в настоящее время вы не можете сделать это напрямую из JavaScript, поскольку Google не устанавливает заголовки CORS, чтобы разрешить междоменную публикацию в своем API.

Поэтому, если вы хотите это сделать, вам нужно «ретранслировать» свой запрос через веб-сервер или что-то подобное. Я делаю это с помощью следующего PHP-скрипта, затем отправляю запрос через JavaScript в свой PHP-скрипт. И, наконец, вам необходимо аутентифицировать себя с помощью OAuth.

$url = "http://www.google.com/fusiontables/api/query";
$relay = new PostRelay($url,$_POST);
echo $relay->relay();

И в классе PostRelay определен метод relay(), $_POST содержит все опубликованные данные (представленные $this->data в моем классе):

public function relay()
{
    $url = $this->getUrl();
    $this->curlHandler = curl_init($url);
    curl_setopt($this->curlHandler, CURLOPT_POST, true);
    curl_setopt($this->curlHandler, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($this->curlHandler, CURLOPT_TIMEOUT, 30);
    curl_setopt($this->curlHandler, CURLOPT_FOLLOWLOCATION, 1);

    if($this->data != null) {
        curl_setopt($this->curlHandler, CURLOPT_POSTFIELDS, $this->getData());
    }

    $remote_answer = curl_exec($this->curlHandler);

    if(curl_errno($this->curlHandler) != 0) {
        $msgErrorNo = "cURL Errornumber: ".curl_errno($this->curlHandler);
        $msgError = "cURL Error: ".curl_error($this->curlHandler);
        throw new RemoteException($url,$msgErrorNo." ".$msgError);
    }
    return $remote_answer;
}
person Odi    schedule 08.04.2012
comment
Эй, Стефан, не могли бы вы показать, как это можно сделать здесь: - person Daniel Montenegro; 10.04.2012
comment
Что вы имеете в виду здесь? Я могу показать вам, как использовать мой фрагмент кода. - person Odi; 10.04.2012
comment
Хорошо, я вижу, вы имеете в виду приведенный ниже пример кода. Это очень хорошо работает для отображения ваших данных. Теперь, если вы хотите отправить данные в Fusion Tables, вы должны использовать промежуточный веб-сервер, потому что Google (пока?) не разрешает прямой запрос POST к своему API из JavaScript. Настройте мой PHP-скрипт на своем веб-сервере и отправьте POST-запрос этому скрипту. В jQuery вы можете использовать для этого $.post(url-to-php-script,success-function). - person Odi; 10.04.2012

Это возможно с помощью нового API Fusion Table Trusted Tester. Я разместил код здесь:

http://groups.google.com/group/fusion-tables-api-trusted-testers/msg/126228f052eff30e?hl=en_US

Чтобы использовать новый код, вы должны быть доверенным тестировщиком. Чтобы стать доверенным тестировщиком, просто присоединитесь к группе Trusted Tester API:

http://groups.google.com/group/fusion-tables-api-trusted-testers?hl=en_US

person Kathryn Hurley    schedule 10.04.2012

Взгляните на jQuery Ajax:

Пример (при условии, что веб-служба .NET находится в корневой веб-папке с именем Ajax):

var Params = "{'myParamName': 'myParamValue'}";

$.ajax({
        type: "POST",
        url: "Ajax/MyWebService.asmx/MyWSMethod",
        data: Params,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            // Handle the response here as you need to...
        },
        failure: function () {
            // Handle failure if needed
        }
    });
person LJ Wilson    schedule 08.04.2012
comment
Да - должен отойти на мгновение - person LJ Wilson; 08.04.2012