我有一个表单,点击后,提交button
会通过ajax
拨打电话。这个ajax在php文件中,因为我需要用数据库中的数据填充一些变量。但是我不能在/成功之前使用这些电话。它们只是不起作用,我已经尝试使用data
,alert
尝试返回一些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
。谢谢大家的帮助。
答案 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文件返回响应