Jquery 需要两次点击的点击函数?

Jquery 需要两次点击的点击函数?,jquery,Jquery,我有一个jQuery函数,它在第二次单击之前不会执行所有代码。它转到$.get的外部并执行第一个“console.log('hit')”,但在第二次单击之前,它从未完成代码的其余部分。有什么想法吗 $(document).ready(function() { $('#startbutton').click(function() { $.get('getquestion', function(da

我有一个jQuery函数,它在第二次单击之前不会执行所有代码。它转到$.get的外部并执行第一个“console.log('hit')”,但在第二次单击之前,它从未完成代码的其余部分。有什么想法吗

$(document).ready(function() {
            $('#startbutton').click(function() {

                $.get('getquestion',
                      function(data, status) {
                        var qAndA = data
                        window.jsonQA = jQuery.parseJSON( qAndA );
                        console.log(jsonQA)
                });

                console.log('hit')

                var questionArray = []
                for (var i in jsonQA) {
                    questionArray.push(i)
                }

                var index = Math.floor(Math.random() * questionArray.length)

                var theQuestion = questionArray[index]

                $('#question').html(theQuestion)

                console.log('hit2')
            });
        });

我猜它不会运行其余的代码,因为未定义的
window.jsonQA
。您必须在使用它之前定义它。

我想它不会运行其余的代码,因为未定义的
window.jsonQA
。您必须在使用它之前定义它。

您使用的是jsonQA,它是init。在得到之后。在本例中,get的响应是花费时间。 因此,您可以使用下面的get success函数中的剩余代码(案例1)或使用setTimeout(案例2),也可以使用$.get的“done”方法

案例1:(将代码放入以获得成功)

案例2:使用setTimeout(给时间执行$.get)


您正在使用jsonQA,它是init。在得到之后。在本例中,get的响应是花费时间。 因此,您可以使用下面的get success函数中的剩余代码(案例1)或使用setTimeout(案例2),也可以使用$.get的“done”方法

案例1:(将代码放入以获得成功)

案例2:使用setTimeout(给时间执行$.get)


这是一个时间问题。get是异步的,但其余代码都依赖于它

第二次单击时,GET已完成,但不是第一次运行它

您需要将该代码的其余部分放入:

function(data, status) {
   var qAndA = data
   window.jsonQA = jQuery.parseJSON( qAndA );
   console.log(jsonQA)
   //put the rest of the code here...
}

这是一个时间问题。get是异步的,但其余代码都依赖于它

第二次单击时,GET已完成,但不是第一次运行它

您需要将该代码的其余部分放入:

function(data, status) {
   var qAndA = data
   window.jsonQA = jQuery.parseJSON( qAndA );
   console.log(jsonQA)
   //put the rest of the code here...
}

代码不工作的原因是当AJAX响应返回时,代码已经向前移动了。您可以使用标志“async:true”并在Response on Success标记上移动处理逻辑。 还有一种方法是使用下面建议的PROMISE接口

$.get(
  url: url,
  data: data,
  dataType: dataType
).*done*(function(data){

   //Move all your processing logic here
// Transform Response ..bla blas
var questionArray = []
                for (var i in jsonQA) {
                    questionArray.push(i)
                }

                var index = Math.floor(Math.random() * questionArray.length)

                var theQuestion = questionArray[index]

                $('#question').html(theQuestion)



    });

代码不工作的原因是当AJAX响应返回时,代码已经向前移动了。您可以使用标志“async:true”并在Response on Success标记上移动处理逻辑。 还有一种方法是使用下面建议的PROMISE接口

$.get(
  url: url,
  data: data,
  dataType: dataType
).*done*(function(data){

   //Move all your processing logic here
// Transform Response ..bla blas
var questionArray = []
                for (var i in jsonQA) {
                    questionArray.push(i)
                }

                var index = Math.floor(Math.random() * questionArray.length)

                var theQuestion = questionArray[index]

                $('#question').html(theQuestion)



    });

打开javascript控制台(在大多数浏览器中为F12)。它是否显示任何错误?打开javascript控制台(在大多数浏览器中为F12)。它显示出任何错误吗?看起来@SeeTheC比我更厉害,他的答案更完整;-)。大学教师;别担心,你的答案也是正确的。投票支持你:像@seetech这样的书把我揍了一顿,他的答案更完整;-)。大学教师;别担心,你的答案也是正确的。投票支持你:D