2012-05-08 7 views
2

jQuery.ajaxを使用して複数の変数を外部サーバーに送信する方法を教えてください。変数からmySQLを更新する外部PHPファイルに値を送る必要があります。これが今の私が使用するコードです:複数の変数をサーバーjQueryに送信

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)); 
?> 
+0

正しくコードをフォーマットする方法を学習してください。それはあなたと他の人が一目で理解することをはるかに容易にします。 –

+0

変数の代わりに疑問符を挿入すると、私の答えが表示されます –

答えて

4

変更

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

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

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

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

:あなたが "NUM" ではない "数"

EDITを使用してPHPで:とあなたの最後の質問の前後に引用符を削除し、私は構造体を使用したい読みやすくするために

+0

PHPファイルを変更しました。しかし、これはうまくいかないので、私のコードに何か間違っていますか? – user1358625

+0

phpファイルのnumをnumberに変更します。 – OptimusCrime

+0

私はそれをやったが、それでも動作しません – user1358625

0

マーク

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

代わりの

$sql = "update table set 
x=? , 
y=? 
where num='?'"; 
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'})); 
?>