Javascript AJAX仅在第一次单击后返回数据
我有一个ajax请求脚本:Javascript AJAX仅在第一次单击后返回数据,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个ajax请求脚本: function SendData(){ $( "#Submit" ).click(function() { $('#Submit').attr("disabled", true); $.ajax({ type:"POST", url:"assets/process.php", data: { Years : $('#Years').val() },
function SendData(){
$( "#Submit" ).click(function() {
$('#Submit').attr("disabled", true);
$.ajax({
type:"POST",
url:"assets/process.php",
data: {
Years : $('#Years').val()
},
success: function(Response){
if (Response.Status == 'Error') {
swal("Ups!", "Nemo' zebavaš", "error");
} else if (Response.Status == 'Error0') {
swal("Ups!", "Servis 'Misterije' mogu koristiti samo rođene osobe!", "error");
}
else if (Response.Status == 'Error120') {
swal("Ups!", "Žao nam je! Niste podobni za korišćenje WEB Servisa 'Misterije'!", "error");
}
else if (Response.Status == 'Success') {
swal("USPEŠNO!", 'Rođeni ste: '+Response.Calculated+' godine!', "success");
}
$('#Submit').attr("disabled", false);
}
});
});
}
当我在浏览器中加载页面时,将数据添加到输入中并单击按钮,什么都不会发生,但在第二次和之后的所有单击中,直到我刷新页面,所有工作正常。
如何解决此问题?当您单击按钮时,您可能正在调用此SendData()
函数
此函数没有执行您认为它正在执行的操作。它没有调用AJAX请求。此函数所做的只是将单击处理程序附加到按钮。没别的了。然后,下次单击该按钮时,该处理程序将执行
(更不用说它还会附加另一个click处理程序。因此第三次click将调用该处理程序两次。依此类推……)
没有必要将所有这些都封装在一个函数中。与此相反:
function SendData(){
$( "#Submit" ).click(function() {
// your code
});
}
只要这样做:
$( "#Submit" ).click(function() {
// your code
});
这将附加click处理程序,而不是调用它。之后,当您单击该按钮时,处理程序将被调用
在最坏的情况下,如果执行此代码时按钮还不存在,则必须执行此操作:
$(function () {
$( "#Submit" ).click(function() {
// your code
});
});
这将等待document.ready
事件,然后附加处理程序
(注意:删除该函数后,您还需要删除对SendData()
的任何引用。我假设您是从按钮内联调用它。但是,在使用jQuery附加单击处理程序时,您不需要这样做。)您可能正在调用此SendData()
当您单击按钮时,是否运行该功能
此函数没有执行您认为它正在执行的操作。它没有调用AJAX请求。此函数所做的只是将单击处理程序附加到按钮。没别的了。然后,下次单击该按钮时,该处理程序将执行
(更不用说它还会附加另一个click处理程序。因此第三次click将调用该处理程序两次。依此类推……)
没有必要将所有这些都封装在一个函数中。与此相反:
function SendData(){
$( "#Submit" ).click(function() {
// your code
});
}
只要这样做:
$( "#Submit" ).click(function() {
// your code
});
这将附加click处理程序,而不是调用它。之后,当您单击该按钮时,处理程序将被调用
在最坏的情况下,如果执行此代码时按钮还不存在,则必须执行此操作:
$(function () {
$( "#Submit" ).click(function() {
// your code
});
});
这将等待document.ready
事件,然后附加处理程序
(注意:删除该函数后,您还需要删除对
SendData()
的任何引用。我假设您是从按钮内联调用它。但在使用jQuery附加单击处理程序时,不需要这样做。)不要调用该函数
将代码放入$(文档)。ready函数不要调用该函数
将代码放入$(document).ready函数我更改了代码并删除了“$(function(){”,现在单击ID为“Submit”的按钮“什么都没有发生。@Miljanic:JavaScript控制台中是否有错误?调试代码时,会发生什么?此代码在运行时是否找到目标元素?是否执行了单击处理程序?它在哪里失败?”什么都没有发生恐怕不是很能说明问题。您需要进行一些调试。控制台和调试器上没有错误或警告Firefox@MiljanIlic:当您在调试器中单步执行代码时会发生什么情况?我无法在您的计算机上为您调试此代码。当我单击按钮时,我在控制台中得到此代码:SyntaxError:missing)在参数列表index.php之后:第44行的44:4是脚本结束标记,我更改了代码并删除了“$(function(){”,现在单击ID为“Submit”的按钮“什么都没有发生。@Miljanic:JavaScript控制台中是否有错误?调试代码时,会发生什么?此代码在运行时是否找到目标元素?是否执行了单击处理程序?它在哪里失败?”什么都没有发生恐怕不是很能说明问题。您需要进行一些调试。控制台和调试器上没有错误或警告Firefox@MiljanIlic:当您在调试器中单步执行代码时会发生什么情况?我无法在您的计算机上为您调试此代码。当我单击按钮时,我在控制台中得到此代码:SyntaxError:missing)第44行的参数列表index.php:44:4之后是脚本结束标记