[英]Using return false is stopping my AJAX call from executing, removing it fixes it but then the page refreshes
我正在使用jQuery进行AJAX POST表单,并且不希望页面刷新。 我添加了return false命令,该命令防止页面刷新,但是AJAX POST不会发生。 如果删除return false命令,则我的AJAX POST成功,但页面刷新。 我究竟做错了什么?
PHP代码:
<form name="frmfeedback" id="frmfeedback" method="POST">
<label>This answer was helpful</label>
<input class="test" type="text" name="test" value=""/>
<input class="hidden" id="fbackqueryval" type="text" name="fbackqueryval" value="1"/>
<input class="btntick" type="submit" name="fbackresponse" value="Positive" onclick="submitdata()">
<input class="btncross" type="submit" name="fbackresponse" value="Negative" onclick="submitdata()">
</form>
JS代码:
function submitdata()
{
$('#frmfeedback').on('click', function(e){
e.preventDefault();
$.ajax({
method: "POST",
url: "/",
data: { fbackqueryval: "1"}
}).done(function( msg ) {
alert( "Data Saved" );
return false;
});
});
}
您有三种方法可以做到这一点。
第一种方式,停止submitdata
返回false(将其从done
回调中删除)
function submitdata() {
$('#frmfeedback').on('click', function(e) {
e.preventDefault();
$.ajax({
method: "POST",
url: "/",
data: {
fbackqueryval: "1"
}
})
.done(function(msg) {
alert("Data Saved");
});
});
return false;
}
第二种方式将类型按钮更改为type=button
而不是type=submit
<input class="btntick" type="button" name="fbackresponse" value="Positive" onclick="submitdata()">
<input class="btncross" type="button" name="fbackresponse" value="Negative" onclick="submitdata()">
第三种方式,将return false添加到onClick
属性:
<input class="btntick" type="submit" name="fbackresponse" value="Positive" onclick="submitdata();return false;">
<input class="btncross" type="submit" name="fbackresponse" value="Negative" onclick="submitdata();return false;">
正如其他人所提到的,您正在拨打路线/
您可以按照以下方式进行操作:
$(document).ready(function() {
$('input[type=button][name=fbackresponse]').on('click', function(e) {
fbackqueryval = $(this).val();
$.ajax({
method: "POST",
url: "/",
data: {
fbackqueryval: fbackqueryval
}
})
.done(function(msg) {
alert("Data Saved");
});
});
});
<input class="btntick" type="button" name="fbackresponse" value="1">
<input class="btncross" type="button" name="fbackresponse" value="-1">
正在刷新页面,因为您正在提交表单。
如果您要拨打AJAX电话,则无需提交表格。
只需如下更改代码:
jQuery的:
$('.myAjaxButton').on('click', function(e){
e.preventDefault();
$.ajax({
method: "POST",
url: "/myAjax.php",
data: { fbackqueryval: "1"}
})
.done(function( msg ) {
alert( "Data Saved" );
});
});
和html:
<label>This answer was helpful</label>
<button class="btntick myAjaxButton">Positive</button>
<button class="btncross myAjaxButton">Negative</button>
您可以检查: https : //jsfiddle.net/32dLa1wh/
如果对您不起作用,则应调试您的php文件(例如myAjax.php)
您需要更改button type
<input class="btntick" type="button" name="fbackresponse" value="Positive" onclick="submitdata()">
<input class="btncross" type="button" name="fbackresponse" value="Negative" onclick="submitdata()">
返回必须在完成回调之外。 因此submitdata必须返回false以停止submit-event。
当用户在输入字段中按Enter键时,更改按钮的类型不会解决问题。
所有注释的总和最终使解决方案单击。
主要学习点是:
我还没有弄清楚如何创建一个函数来处理两个不同的按钮,所以我有两个链接到两个按钮的函数:fbackPositive()和fbackNegative()。
JS代码:
function fbackPositive() {
$.ajax({
method: "POST",
url: "index.php",
data: {
fbackqueryval: "1",
fbackresponse: "Positive"
}
})
.done(function(msg) {
alert("Data Saved");
});
return false;
}
function fbackNegative() {
$.ajax({
method: "POST",
url: "index.php",
data: {
fbackqueryval: "1",
fbackresponse: "Negative"
}
})
.done(function(msg) {
alert("Data Saved");
});
return false;
}
HTML:
<input class="" id="fbackqueryval" type="text" name="fbackqueryval" value="1"/>
<button class="btntick" type="button" name="fbackresponse" value="Positive" onclick="fbackPositive()">
<button class="btncross" type="button" name="fbackresponse" value="Negative" onclick="fbackNegative()">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.