【问题标题】:Send multiple variables to server jQuery将多个变量发送到服务器 jQuery
【发布时间】:2012-05-16 19:43:04
【问题描述】:

如何使用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));
?>

【问题讨论】:

  • 请了解如何正确格式化您的代码。让您和他人一目了然。
  • 您插入问号而不是变量,请参阅我的回答

标签: jquery mysql post


【解决方案1】:

改变

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

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

顺便说一句,在您的 PHP 文件中,您引用的是 id,但您没有发送一个名为该变量的变量。

【讨论】:

  • 我更改了 PHP 文件。但是我的代码是否还有其他问题,因为这不起作用?
  • 在php文件中将num改为number。
【解决方案2】:

为了可读性,我会使用结构:

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 中你使用“num”而不是“number”

编辑:并删除最后一个问号周围的引号

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

而不是

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

【讨论】:

    【解决方案3】:

    我会使用 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'}));
    ?>
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      相关资源
      最近更新 更多