$。当().then()对我不起作用时,我做错了什么?在此先感谢您的帮助。我想确保首先加载表单,然后我想在表单中填充<div>
以显示Google的重新收回。这是测试:它实际上加载了表单,但警报根本没有弹出。我测试工作我将更改“警报”以调用showRecaptcha函数。
<script type="text/javascript">
$("document").ready(function () {
function showRecaptcha(element) {
Recaptcha.create("publick_key_here", element, {
theme: "red",
callback: Recaptcha.focus_response_field});
};
// load the form
$.get('../php/formularioDeReserva.html', function (data) {
$.when($('.subscriptionForm').html(data))
.then(function(){alert('Then')})
.fail(function(){alert( 'failed.' )});
alert('I reached this point.');
});
})
</script>
Felix 的注意事项:我的测试显示.html(data)
未立即完成。在下面的代码中,如果我离开alert('Load was performed.')
警报的暂停,请给出一些时间,以便showRecaptcha
成功。如果我删除警报则无效。
$.get('../php/formularioDeReserva.html', function (data) {
$('.subscriptionForm').html(data);
alert('Load was performed.');
showRecaptcha('recaptcha_div');
});
Guiherme 的注意事项:尝试你的建议,在我看来这是一个很好的逻辑思路,但仍然不起作用,我不明白为什么不行。在以下代码中, subcritionForm 显示,但success
,error
和complete
警报根本不会弹出。
$.get('../php/formularioDeReserva.html', function (data) {
$('.subscriptionForm').html(data);
// alert('Load was performed.');
// showRecaptcha('recaptcha_div');
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
注意:什么时候“查看源代码”我意识到Java脚本被包含两次,因为其中一个文件没有正确保存。这解释了警报弹出两次的原因。
答案 0 :(得分:1)
您需要致电
$.when()
之前的
$.get()
但是,如果它只是一个获取请求,为什么不使用
$.ajax({...}).success(function(data){..}).error(function(){...})...;
或
$.get({...})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
即便如此,我认为在这种情况下,fail()永远不会被调用。
答案 1 :(得分:0)
我放弃了!!!
我决定将主.html
文件重命名为.php
并使用php include语句而不是.get
:
<div class="subscriptionForm">
<?php include("../php/formularioDeReserva.html"); ?>
</div>
并将jQuery更改为显示recaptcha的简单调用:
$("document").ready(function () {
function showRecaptcha(element) {
Recaptcha.create("public key here", element, {
theme: "red",
callback: Recaptcha.focus_response_field});
};
showRecaptcha('recaptcha_div');
[..more here..]
});
感谢大家的帮助。
更新:我刚刚意识到,或许我需要创建一个deferral
并创建一个promise
,但我真的不明白这个概念,最后使用php include很容易。