2015-07-01 33 views
0

我有一個表單,當點擊提交button通過ajax撥打電話。這個ajax在php文件裏面,因爲我需要用數據庫中的數據填充一些變量。但是我無法在成功之前使用這些電話。他們只是不工作,我做了試圖返回一些data,使用alert,console.log並沒有發生任何反應。有趣的是,如果ajax在文件js中被隔離,它們就可以工作。有人可以幫助我嗎?Ajax調用(before/success)在php文件中不起作用

文件:

<?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。謝謝大家的幫助。

+0

是你的URL參數是否正確?是不是隻是'/buy_form.php'? –

+0

如果你有一個提交按鈕,它會**默認**提交頁面,因此它將重新加載它,因此ajax請求將無法按預期工作。您能否向我們提供關於HTML端和文件夾層次結構的更多信息?此外,您在這裏有一個錯誤:'成功:功能(數據){'}。 < - 刪除最後一個逗號。 – briosheje

+0

@briosheje除非OP使用的是真正舊的IE,否則尾隨逗號不會導致錯誤 – epascarello

回答

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,它拋出一個解析錯誤。

+0

謝謝,但問題仍然存在。 –

+0

如果您在點擊功能中放置警報,它會觸發嗎?控制檯中是否有任何錯誤(可能需要單擊保存日誌複選框/按鈕)?如果您向Ajax調用添加錯誤處理程序,它會被觸發嗎?您現在需要爲您的問題添加更多上下文。 – epascarello

+0

是的,該功能被觸發並且警報有效。在控制檯上沒有任何錯誤並提交表單。 'XHR Loaded(buy_form.php - 200 OK - 52.26799985393882ms - 482B)' –

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文件返回響應

+0

它返回一個答案,但我不能稱'成功'。 –