That post帮助我将变量从php表单传递给javascript。
现在我想将它们发送到一个php文件,该文件应该使用值更新数据库。为简单起见,我创建了这个文件,它应该只返回值以检查它是否有效: addCOmmentsToDBtest.php:
<?php
$video_id = $_POST['VideoId'];
$starttime = $_POST['starttime'];
echo "Test! \n StartTime = " .$starttime. " videoId = " .$video_id; ?>
调用addCOmmentsToDBtest.php的整个jquery $ .ajax函数位于下面的文件中(JqueryTest.php)。我厌倦了传递网址中的数据:
url: "addCommentsToDBtest.php?starttime="+ starttime +"endtime="+ endtime +"&text="+text+"&videoid="+videoid,
或传递像这样的数据
$.ajax({
url: "addCommentsToDBtest.php",
type: "POST",
data: {
'videoId': '<?php echo $video_id ?>',
'starttime': starttime,
'endtime': endtime,
'text': text,
'cat': cat
}
两者都不起作用。问题还在于,在这个简单的例子中,来自addCOmmentsToDBtest.php的字符串
echo "Test! \n StartTime = " .$starttime. " videoId = " .$video_id;
未传递给div标签“log”。 (我也尝试在db中插入值,就像它应该在最后 - 不起作用)。
要传递我尝试过的字符串:
success: function(data) {
$("#log").html("Sucess"+ data);
}
或
complete: function(data) {
$("#log").html("Sucess"+ data);
}
或
request.done(function( msg ) {
$( "#log" ).html("Sucess! Msg =" + msg );
});
Chrome调试器的屏幕截图:
问题是:如何从addCOmmentsToDBtest.php传回数据以检查变量是否在这个简单示例中被传输?
我最终尝试实现的目标是: 将数据从JqueryTest.php传递到addCOmmentsToDBtest.php并更新我的数据库。
提前感谢您的帮助。
这里包含整个javascript和php表单的文件。
JqueryTest.php:
<?php
$video_id = '153fb143';
?>
<!DOCTYPE html>
<html>
<head>
<title>JQUERY</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function addCommentsToDB () {
var videoid = document.getElementById('videoid').value;
var starttime = document.getElementById('starttime').value;
var endtime = document.getElementById('endtime').value;
var text = document.getElementById('text').value;
var cat = document.getElementById('cat').value;
alert ("starttime ="+starttime+"; Endtime = "+endtime+"; text = "+text);
$.ajax({
url: "addCommentsToDBtest.php?starttime="+ starttime +"endtime="+ endtime +"&text="+text+"&videoid="+videoid,
// check ''
// url: "addCommentsToDBtest.php?starttime="+ starttime +"endtime="+ endtime +"&text="+text+"videoId='"+videoId+"'",
// with data use that:
// url: "addCommentsToDBtest.php",
type: "POST",
/* Does not Work
data: {
'starttime': starttime,
'endtime': endtime,
'text': text,
'cat': cat }, */
success: function(data) {
$("#log").html("Sucess"+ data);
}
});
};
</script>
</head>
<body>
<div id="log"> <p>log</p></div>
<div id="msg"></div>
<table>
<tr>
<td><div id="div1">div1</div></td>
<td><div id="div2">div2</div></td>
</tr>
<tr>
<td><div id="div3">div3</div></td>
<td><div id="div4">
<!--ADD Table-->
<form method="post" onsubmit="addCommentsToDB()" action="<?php $_SERVER['PHP_SELF']?>" >
<table width="150px" border="1" cellpadding="0">
<tr>
<td width="25px"><p>start</p></td>
<td width="25px"><p>end</p></td>
<td width="75px"><p>Text</p></td>
<td width="10px"><p>cat</p></td>
<td width="5px"><p>+</p></td>
</tr>
<tr>
<td><input style="width: 75px" type="time" name="starttime" id="starttime"></td>
<td><input style="width: 75px" type="time" name="endtime" id="endtime"></td>
<td><input style="width: 75px" type="text" name="text" id="text"><input type="hidden" id="VideoId" name="VideoId" value="<?php echo $video_id; ?>"></td>
<td>
<select width="15" name="cat" id="cat">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select></td>
<td><input type="hidden" name="videoid" id="videoid" value="<?php echo $video_id ?>"><input name="ADD" type="submit" value="add"> </td>
</tr>
</table>
</form>
</div></td>
</tr>
</table>
</body>
</html>
答案 0 :(得分:1)
首先将addCommentsToDB(); return false;
设置为表单的onsubmit。没有它,您的表格将继续提交。
如果您使用的是ajax POST,则不要将url与GET参数一起使用。使用data
属性发送您的数据。
答案 1 :(得分:0)
您需要将&
添加到第二个变量
url: "addCommentsToDBtest.php?starttime="+ starttime +"endtime="+ endtime +"&text="+text+"&videoid="+videoid,
应该是
url: "addCommentsToDBtest.php?starttime="+ starttime +"&endtime="+ endtime +"&text="+text+"&videoid="+videoid,