在发布多个变量成功或request.done不起作用之后

时间:2013-10-18 10:32:58

标签: javascript php jquery ajax

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调试器的屏幕截图:

enter image description here

问题是:如何从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>

2 个答案:

答案 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,