jQuery / ajax不会发送帖子数据

时间:2015-02-23 16:39:49

标签: php jquery ajax

尝试让jQuery发送textarea的内容来更新记录,但它不会。当我更改textarea的值,使其以数字开头,然后它发送正常。我可以使用alert()验证内容是否已成功传递给JS函数,但它无法访问PHP文件。所有其他JS函数都可以正常工作。

编辑以添加更多可能相关的代码。

使用Javascript:

<script>
function add_vid(t) {
    if ($('#vref').val().length <5) return;
    var vref = $('#vref').val();
      $.ajax({
      type: 'POST',
      url: 'inc/ajax.php',
      data: { 'a':'add_vid', 't':'<?=$_SESSION['t']?>', 'vref':vref},
      beforeSend:function(){
        $('#add_vid_status').html('Adding...');
      },
      success:function(data){
            if (data == 'added') {
            $('#add_vid_status').html('Added');
            $('#vid_list').prepend('<div align="center" class="vid">'+vref+'</div>');
            $('#vref').val('');
        }
        else $('#add_vid_status').html('Error');
      },
      error:function(){
        $('#add_vid_status').html('Error');
      }
    });
  }
function del_vid(id) {
    var confirmdel = confirm('Delete ?');
    if (confirmdel) {
    $.ajax({
      type: 'POST',
      url: 'inc/ajax.php',
      data: { 'a':'del_vid', 't':'<?=$_SESSION['t']?>', 'id':id},
      success:function(data){
            if (data == 'deleted') {
                $("#v"+id).hide(900);
        }
      },
      error:function(){
        //$("#"+msg_id+'_a').html('error');
      }
    });
    }
    return false;
}
function update_vid(id) {
    vref = $("#update"+id).val();
    alert(vref);
    $.ajax({
          type: 'POST',
          url: 'inc/ajax.php',
          data: { 'a':'update_vid', 't':'<?=$_SESSION['t']?>', 'id':id, 'vref':vref},
          success:function(data){
                alert(data);
                if (data == 'updated') {
                    $("#if"+id).html(vref);
            }
          },
          error:function(){
            //$("#"+msg_id+'_a').html('error');
          }
        });
        return false;
}
function move_vid(id,dir) {
$.ajax({
      type: 'POST',
      url: 'inc/ajax.php',
      data: { 'a':'move_vid', 't':'<?=$_SESSION['t']?>', 'id':id,'dir':dir},
      success:function(data){
            pos = data.split('_');
            pos_from = pos[0];
            pos_to = pos[1];
            //$("#if"+id).hide();
            if ($("#pos"+pos_to).length) {//if the id2 is on page (and not on a different paginated page) - swap them on-screen
                temp_html = $("#pos"+pos_from).html();
                $("#pos"+pos_from).html($("#pos"+pos_to).html());
                $("#pos"+pos_to).html(temp_html);
                temp_html = null;
            }
            else $("#pos"+pos_from).html('<div>Video moved off page.<br> Reload to see the result.</div>');
            //$("#if"+id).fadeIn(400);
      },
      error:function(){
        //$("#"+msg_id+'_a').html('error');
      }
    });
    return false;
}
</script>

HTML:

<textarea name="vref" cols="55" rows="3" id="vref" placeholder="Video embed code"></textarea>
 <input type="button" value="Add" onclick="add_vid('<?=$_SESSION['t']?>')"> <span id="add_vid_status"></span>

<input type="button" value="update" onClick="update_vid(27)">
<textarea cols="65" rows="3" id="update27"><iframe src="http://player.vimeo.com/video/123456789?byline=0&portrait=0" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></textarea>

PHP代码:

<?
session_start();
if ($_SESSION['auth'] != 1 || $_POST['t'] != $_SESSION['t']) exit();
elseif (isset($_POST['a'])) {
    require_once('cfg.php');
    db_connect();
    if ($_POST['a'] == 'add_vid' && strlen($_POST['vref'])>4) {
        //ADDS VIDEO TO DB AND ECHOES "added"
    }
    elseif ($_POST['a'] == 'del_vid' && is_numeric($_POST['id'])) {
        //DELETES VIDEO AND ECHOES "deleted"
    }
    elseif ($_POST['a'] == 'update_vid' && is_numeric($_POST['id']) && strlen($_POST['vref']>4)) {
        $id = (int)$_POST['id'];
        //echo 'PHP: '.$_POST['vref']; (here i can test if the argument reaches.)
        $vref = mysql_real_escape_string($_POST['vref']);
        $q = mysql_query("UPDATE `videos` SET `vref`='{$vref}' WHERE `id`={$id}") or die ('update error: '.mysql_error());
        if ($q) echo 'updated';
    }
    // CODE GOES ON...
}
?>

2 个答案:

答案 0 :(得分:0)

你的Ajax数据对象中有一个拼写错误:

't':'<?=$_SESSION['t']?>'

您使用相同类型的引号两次,因此Javascript认为t是变量,并且无法识别它。更改这样的引号可以修复代码抛出的错误:

't':'<?=$_SESSION["t"]?>'

其他,如果你 意味着这是一个变量,你需要使用它如下:

't':'<?=$_SESSION["'+ t +'"]?>'

答案 1 :(得分:0)

在放弃更新功能之后,昨天当我想复制类似项目的代码时,我注意到我在检查字符串长度的PHP代码中的明显错误:我写了strlen($_POST['vref']>4)而不是{{ 1}}。后 纠正这一点它完美无缺。