0

我正在尝试使用 AJAX 将值发送到 PHP 文件,然后更新服务器上的 mysql 数据库。但由于某种原因,这些值不会传输到 PHP 文件中。

这是我使用的 JS:

function send_message()
{

 var number = localStorage.getItem("number");
  var message = prompt("Message:", "");
   jQuery.ajax({ type: "POST", 
url: serviceURL + "message.php", 
data: 'number='+number+'&message='+message,
cache: false, 
success: function(response) 
{
alert("message sent");
}
});


}

这是message.php

    <?php
include 'config.php';

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

// new data

$number = $_GET['number'];
$message = $_GET['message'];
// query
$sql = "INSERT into table
        SET condition=0, change=1, change_time=NOW(), recieve=999, 
        number=?, message=?";
$q = $conn->prepare($sql);
$q->execute(array($number, $message));


?>

除了数字和消息为 NULL 外,其他所有内容都插入到 mysql 中。这可能是什么原因?

4

4 回答 4

1

您正在使用 POST 使用 AJAX 发布数据。为了在 PHP 中监听这些值,您需要...

代替:

$number = $_GET['number'];
$message = $_GET['message'];

和:

$number = $_POST['number'];
$message = $_POST['message'];
于 2012-07-12T05:49:27.100 回答
1

为了让事情变得更简单,只需在 jQuery 中使用 $.post 或 $.get 之类的便捷方法进行 ajax 调用:

function send_message()
{

  var number = localStorage.getItem("number");
  var message = prompt("Message:", "");
  $.post(serviceURL + "message.php", {'number' : number, 'message' : message},
         function(response){
           alert("message sent");      
         }
  );

}

然后在你的 php 中:

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

//if you used $.get you will also have to use $_GET here
$number = $_POST['number'];   
$message = $_POST['message'];

// query
$sql = "INSERT into table
        SET condition=0, change=1, change_time=NOW(), recieve=999, 
        number=?, message=?";
$q = $conn->prepare($sql);
$q->execute(array($number, $message));


?>

我可以看到您在 PDO 中使用了准备好的语句。但您可能还想添加:

过滤变量过滤输入以提高安全性。

于 2012-07-12T05:55:54.363 回答
0

使用$_POST而不是$_GET. 另外,您可以尝试使用$_REQUEST全局数组来忘记它。它包含您发送到脚本的所有数据。

于 2012-07-12T05:51:08.753 回答
0

您可以将您的 php 文件更改为;

<?php
include 'config.php';
// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
// new data
$number = $_POST['number'];
$message = $_POST['message'];
// query
$sql = "INSERT into table
        SET condition=0, change=1, change_time=NOW(), recieve=999, 
        number=?, message=?";
$q = $conn->prepare($sql);
$q->execute(array($number, $message));
?>
于 2012-07-12T06:04:09.027 回答