好的,我在这里做错了什么? 我正在尝试使用JQuery $ .ajax函数从Form中获取数据并返回json数据。但每次帖子数据都为空。
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
</head>
<body>
<form action="testform" method="post">
OLD ID:
<input id="OldID" name="OldID" type="text"><br>
NewID:
<input id="NewID" name="NewID" type="text"><br>
<input id="do" name="do" type="button" value="Get New ID">
</form>
<script type="text/javascript">
var CID = $('#OldID').val();
$(document).ready(function(){
$('#do').click(function(){
sendValue();
});
function sendValue(CID){
$.ajax({
type: 'POST',
url: 'getNewID.php',
data: {OldID: CID},
dataType: 'json',
cache: false,
success:
function(data){
$('#NewID').val(data.NewID);
}
}) }
});
</script>
</body>
</html>
<?php
if (isset($_POST['OldID'])){
$value = $_POST['OldID'];
}else{
$value = "ELSE VALUE";
}
echo json_encode(array("NewID"=>$value));
?>
我确信这是一个简单的错误,但我现在只是在圈子里。
提前致谢!
答案 0 :(得分:3)
$('#do').click(function(){
sendValue();
});
应该是:
$('#do').click(function(){
sendValue("VALUE TO SEND TO THE SERVER");
});
,因为
function sendValue(CID){
采用CID
的范围,您认为应该是var CID = $('#OldID').val();
答案 1 :(得分:1)
您的错误是您在脚本中获取OldID字段的值,而不是某些事件处理程序方法。这会导致加载脚本时(正在查看页面时),文本输入的值保留在变量CID上。当用户点击#do按钮时,CID的值仍然与加载页面时的值相同。因此没有值存储在CID变量中,因此不会通过AJAX发送任何值。 定义另一个函数(Say sendOldID),它读取CID变量中输入的文本的值,然后使用CID参数调用sendValue()方法。使用该函数作为#do按钮的事件处理程序单击。
<script type="text/javascript">
$(document).ready(function(){
$('#do').click(function(){
sendOldID();
});
function sendOldID() {
var CID = $('#OldID').val();
sendValue(CID);
}
function sendValue(CID) {
$.ajax({
type: 'POST',
url: 'getNewID.php',
data: {OldID: CID},
dataType: 'json',
cache: false,
success:
function(data){
$('#NewID').val(data.NewID);
}
}) }
});
</script>