Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX仅在第一次单击后返回数据_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 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() },

我有一个ajax请求脚本:

    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之后是脚本结束标记