Ajax调用(之前/成功)在php文件中不起作用

时间:2015-07-01 13:26:15

标签: javascript php jquery ajax

我有一个表单,点击后,提交button会通过ajax拨打电话。这个ajax在php文件中,因为我需要用数据库中的数据填充一些变量。但是我不能在/成功之前使用这些电话。它们只是不起作用,我已经尝试使用dataalert尝试返回一些console.log,但没有任何反应。有趣的是,如果ajax在文件js中被隔离,它们就可以工作。有人可以帮我吗?

文件:

<?php

$var = 'abc';

?>

<script type="text/javascript">
    $(document).ready(function() {

        $('#buy-button').click(function (e){

            var abc = '<?php echo $var; ?>';

            $.ajax({  
                type: 'POST',
                data: $('#buy-form').serialize(),
                url: './ajax/buy_form.php',
                dataType: 'json',
                before: function(data){
                    console.log('ok');
                },
                success: function(data){

                },
            });
        });

    });
</script>

HTML:

<form id="buy-form">
  <div class="regular large gray">
      <div class="content buy-form">
          /* some code here */
          <div class="item div-button">
            <button id="buy-button" class="button anim" type="submit">Comprar</button>
          </div>
      </div>
  </div>
</form>

---- 编辑 ----

问题解决了!错误发生在before ajax中。正确的字词为beforeSend而非before。谢谢大家的帮助。

2 个答案:

答案 0 :(得分:1)

您说这是一个提交按钮,您不会取消默认操作,因此它会提交表单。你需要阻止这种情况发生。

$('#buy-button').click(function (e){
    e.preventDefault();
    /* rest of code */

现在弄清楚它为什么不叫成功

        $.ajax({  
            type: 'POST',
            data: $('#buy-form').serialize(),
            url: './ajax/buy_form.php',
            dataType: 'json',
            before: function(data){
                console.log('ok');
            },
            success: function(data){

            },
            error : function() { console.log(arguments); }  /* debug why */
        });
    });

我的猜测是你从服务器返回的是无效的JSON并且它会抛出一个解析错误。

答案 1 :(得分:0)

试试这个

<script type="text/javascript">
$(document).ready(function() {

    $('#buy-button').click(function (e){
        e.preventDefault();
        var abc = '<?php echo $var; ?>';

        $.ajax({  
            type: 'POST',
            data: $('#buy-form').serialize(),
            url: './ajax/buy_form.php',
            dataType: 'json',
            beforeSend: function(data){
                console.log('ok');
            },
            success:function(data){

            }
        });
    });

});

并确保您的php文件返回响应