6

だから私は、Javascriptがクライアント側であり、PHPがサーバー側であることを知っています.

JavaScriptコード(HTMLファイル)に配列があり、ユーザーが送信ボタンを押すと、ページがその配列をPHPページに送信し、その日付を取得してSQLデータベースに入れます。

これを行う簡単な方法はありますか?私の配列はこのように宣言さvar markers = [];れています。これは、コードの JavaScript 部分の単なる変数です。

これに関する他の多くの投稿を見てきましたが、すべての解決策が私が必要とするものに適合しないか、現在できることに対してあまりにも多くの変更を必要とします. 私は AJAX や JSON にあまり詳しくありません (正確にはわかりません)。

私のJavascriptは:

var markers = [];

function placeMarker(location) {
        var clickedLocation = new google.maps.LatLng(location);
        var name = document.getElementById("checkname").value;
        var description = document.getElementById("description").value;


        var marker = new google.maps.Marker({
            position: location,
            map: map,
            title: name,
            // This may cause a problem when reloading and editing an existing tour
            // url was found at: http://biostall.com/adding-number-or-letters-to-google-maps-api-markers
            icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' + markerId + '|FE6256|000000'
        });

        marker.setMap(map);
        markers.push([markerId, name, marker.getPosition().lat(), marker.getPosition().lng(), description]);
        //alert("" + markers);
        markerId = markerId + 1;
    }

    google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
    });

    google.maps.event.addListener(marker, "click", function() {
        map.removeOverlay(marker);
        marker.setMap(map);
    });
} 

window.onload = function() {
    var form = document.getElementById('theform');
    form.addEventListener('submit', function(){
        var markersField = document.getElementById('markers');
        markersField.value = JSON.stringify(markers);
    });
}

私のHTMLは:

<form action="portal.php" method="post" id="theform">
    <input type="hidden" id="markers" name="markers">
    <button>Submit</button>
</form>

私の portal.php ファイルには次のものがあります。

$markers = json_decode($_POST['markers']);
echo $markers;

配列に要素があることを知っていても、phpページに何も出力されません。これにより、配列が渡されていないと思います。

4

4 に答える 4

10

フォームを送信した時点でページはすでにリロードされており、問題はないと思います。その場合、そのデータの非表示フィールドを追加し、フォームが送信される直前にフィールドに追加できます。

<form method="post" id="theform">
    <!-- your existing form fields -->

    <input type="hidden" id="markers" name="markers">

    <button>Submit</button>
</form>

次に、この JavaScript を使用します

window.onload = function() {
    var form = document.getElementById('myform');
    form.addEventListener('submit', function(){
        var markersField = document.getElementById('markers');
        var markers = [1,2,3];
        markersField.value = JSON.stringify(markers);
    });
}

そして、これを PHP に追加して、送信されたフォーム データを処理します。

$markers = json_decode($_POST['markers']);
于 2013-03-25T22:10:16.930 に答える
5

これはおそらく最も簡単な方法です。この種のものに適したjQueryを使用しています。最初の部分は、配列をmarkersAJAX POST のパラメーターとして送信するだけです。

// Javascript / jQuery
$.ajax({
    type: 'POST',
    data: markers,
    dataType: 'json',
    url: 'yourPHPFile.php'
});

この部分は、ポストを受け取り、JSON を PHP 配列にデコードする PHP です。

// PHP in 'yourPHPFile.php'
// Santizing the string this way is a little safer than using $_POST['markers']
$markersFromPost = filter_input(INPUT_POST, 'markers', FILTER_SANITIZE_STRING);

// Turn the sanitized JSON string into a PHP object
$markers = json_decode($markersFromPost);
于 2013-03-25T22:41:59.760 に答える
3

AJAX と JSON の基礎を学ぶ必要があります。これには jQuery が役立つので、出発点として jQuery をお勧めします。

AJAX を使用して JSON を送信し$phpArray = json_decode($submittedJson);、viola を使用すると、送信された JavaScript オブジェクトの素敵な PHP 配列が得られます。

于 2013-03-25T22:04:36.870 に答える
1

json オブジェクトを送信し、それを配列に変換しますjson_decode($obj)

于 2013-03-25T22:05:19.000 に答える