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