POST请求更新行(POST request to UPDATE rows)

2019-07-28 20:50发布

我是那种在javascript新手,所以我寻找一些帮助创造了一种拖放地理编码标记,以允许交互式更改地址。 我相信这是可能通过更新位置列行。

第一步做的是“送” POST请求,对不对? 好了,所以我想问一下,如果有人能告诉我一个例子,因为我不作任何想法怎么写,并把这个POST请求在我的代码!

Answer 1:

您必须发布到Fusion Tables的API更新一列,但目前不能直接从JavaScript这样做,因为谷歌不会将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;
}


Answer 2:

这是可能使用新的受信任的测试融合表的API。 我在这里发布一些代码:

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

要使用新的代码,你需要一个信任的测试人员。 要成为一个受信任的测试,只需加入受信任的测试API组:

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



Answer 3:

<!DOCTYPE html>
<html>
<head>
<style>
#map_canvas { width: 600px;height: 550px; }
</style>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"type="text/javascript"></script>
<script type="text/javascript"src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
var map;

var layer;
var tableid = 3385625;

function initialize() {
map = new google.maps.Map(document.getElementById('map_canvas'), {
center: new google.maps.LatLng(-30.127460619520974, -51.167964935302734),
zoom: 11,
 mapTypeId: google.maps.MapTypeId.ROADMAP
});

layer = new google.maps.FusionTablesLayer(tableid);
layer.setQuery("SELECT 'ENDERECO' FROM " + tableid);
layer.setMap(map);
}
//FUNÇÃO PARA ATIVAR OS FILTROS
function changeMap() {
var searchString = document.getElementById('search-string').value.replace(/'/g, "\\'");
if (!searchString) {
layer.setQuery("SELECT 'ENDERECO' FROM " + tableid);
return;
}
layer.setQuery("SELECT 'ENDERECO' FROM " + tableid + " WHERE 'TIPO' = '" + searchString + "'");
var queryUrlHead = 'http://www.google.com/fusiontables/api/query?sql=';
var queryUrlTail = '&jsonCallback=?';
var query = "SELECT COUNT() FROM " + tableid + " WHERE 'TIPO' CONTAINS IGNORING CASE '" + searchString + "'"
var queryurl = encodeURI(queryUrlHead + query + queryUrlTail);
var jqxhr = $.get(queryurl,
function(data){
try{
$('#count').html((data.table.rows[0][0]));
}
catch(err){
$('#count').html('0')
}
},
"jsonp");
}

</script>

</head>
<body onload="initialize();">

<div id="map_canvas"></div>

<div style="margin-top: 10px;">
<label>Qual o tipo?</label>
<select id="search-string" onchange="changeMap(this.value);">
 <option value="">--Selecionar/Reset--</option>
 <option value="Bar">Bar</option>
 <option value="Comidas variadas">Comidas variadas</option>
 <option value="Espaço de Cultura">Espaço de Cultura</option>
 <option value="Hotel">Hotel</option>
 <option value="Igreja">Igreja</option>
 <option value="Museu">Museu</option>
 <option value="Restaurante">Restaurante</option>
 <option value="Shopping Center">Shopping Center</option>
 <option value="Teatro">Teatro</option>
</select>
 </div> </br>
 <label>Quantidade:</label>  
 <span id='count'></span>
 </body>
 </html>


Answer 4:

看看jQuery的阿贾克斯 :

实施例(假定驻留在称为Ajax的网络根文件夹中.NET网络服务):

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
        }
    });


文章来源: POST request to UPDATE rows