2

を使用して複数の変数を外部サーバーに送信するにはどうすればよいですかjQuery.ajax。mySQL を更新する外部 PHP ファイルに変数から値を送信する必要があります。これは私が今使っているコードです:

Javascript:

var number= localStorage.getItem("number")
var coords = {lat: "", lon: ""};

window.onload = function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.watchPosition(showPosition);
    }
    else{
        x.innerHTML="Geolocation is not supported by this browser.";
    }
}

function showPosition(position) {
    coords.lat = position.coords.latitude;
    coords.lon = position.coords.longitude;

    x.innerHTML="Latitude: " + coords.lat + "<br />Longitude: " + coords.lon;  
}

function sendToServer() {
    // here you can reuse the object to send to a server
    alert(coords.lon);
}

function Updatelocation() {
    jQuery.ajax({
        type: "POST",
        url: "location.php",
        data: 'x='+coords.lon, 'y='coords.lat, 'number'=number
        cache: false,
        success: function(response) {
            alert("Record successfully updated");
        }
    });
}

location.php:

<?php
  include 'config.php';

  // database connection
  $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

  // new data

  $x = @$_POST['x'];
  $y = @$_POST['y'];
  $num = @$_POST['num'];
  // query
  $sql = "update table set 
  x=? , 
  y=? 
  where num='?'";
  $q = $conn->prepare($sql);
  $q->execute(array($x, $y, $num));
?>
4

3 に答える 3

4

変化する

data: 'x='+coords.lon, 'y='coords.lat, 'number'=number

data: 'x='+coords.lon+'&y='+coords.lat+'&number='+number;

ところで、あなたが参照している PHP ファイルではid、それと呼ばれる変数を送信していません。

于 2012-05-08T10:18:15.933 に答える
1

私はJSONを使用します:

data = {
  x: cords.lon,
  y: cords.lat,
  number:number
}
jQuery.ajax({
    type: "POST",
    url: "location.php",
    data: 'data='+JSON.stringify(data),
    cache: false,
    success: function(response) {
        alert("Record successfully updated");
    }
});

location.php

<?php
    include 'config.php';

    // database connection
    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

    // data from javascript
    $data = json_decode($_POST['data']);

    // query
    $sql = "update table set 
    x=? , 
    y=? 
    where num='?'";
    $q = $conn->prepare($sql);
    $q->execute(array($data->{'x'}, $data->{'y'}, $data->{'number'}));
?>
于 2012-05-08T10:25:48.057 に答える
0

読みやすくするために、構造体を使用します。

jQuery.ajax({
    type: "POST",
    url: "location.php",
    data: {
        x       : coords.lon,
        y       : coords.lat,
        num     : number
    },
    cache: false,
    success: function(response) {
        alert("Record successfully updated");
    }
});

また、あなたのphpでは「number」ではなく「num」を使用しています

編集:最後の疑問符の周りの引用符を削除します

$sql = "update table set 
x=? , 
y=? 
where num=?";

それ以外の

$sql = "update table set 
x=? , 
y=? 
where num='?'";
于 2012-05-08T10:24:30.007 に答える