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のajax呼び出しに$.postや$.getなどの便利なメソッドを使用します。

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

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 に答える
0

$_POSTの代わりに使用してください$_GET。また、$_REQUESTグローバル配列を使用してそれを忘れることもできます。スクリプトに送信したすべてのデータが含まれています。

于 2012-07-12T05:51:08.753 に答える