まず、Pid に値を割り当てたら、他の人が言っているように Pid に値を割り当てる必要があります。PHP ファイルでは、Pid という名前の変数を取得しようとしているので、それをそのまま渡します。
更新された JQuery は次のとおりです。
jQuery(document).ready(function($) {
$('#PidClick').click(function() {
var Pid = $(this).text();
$.ajax({
type: 'POST',
url: 'test.php',
dataType: 'json',
data: {
Pid: Pid
},
success : function(data){
console.log('reply is' + data.reply);
alert(data.reply);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert('There was an error.');
}
});
});
});
次に、小さなテスト ケースの PHP ファイルを作成しました。すべてが機能することを確認するだけです。繰り返しになりますが、変数をやり取りするときは変数を同じに保つ必要があります。上記の jquery の例では、"data.reply" を使用して情報を取得していることに気付くでしょう。下の PHP ファイルでは、"reply" という名前の変数にデータを割り当てています。また、Ajax リクエストを介してのみファイルにアクセスできるようにするためのセーフガードも含めました。
<?php
// only work if requested with ajax
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
if(isset($_POST['Pid'])) {
$return['reply'] = 'The input was '.$_POST['Pid'];
}
else {
$return['reply'] = 'No input detected';
}
echo json_encode($return);
} else {
die('direct access is forbidden');
}
?>
使用したhtmlファイルは次のとおりです。
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>pid example</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<script src="jquery.js"></script>
<script src="ajax.js"></script>
</head>
<body>
<span style="color:#B00" id="PidClick">4</span>
</body>
</html>
また、この例を実行しようとするときは、すべてのファイルのアクセス許可とパスが正しいことを確認してください。この場合、すべてのファイルは同じディレクトリ内に配置する必要があります。