Javascript jQuery AJAX只调用一次回调
我的Javascript jQuery AJAX只调用一次回调,javascript,jquery,ajax,Javascript,Jquery,Ajax,我的updateMyApps中的jQueryget函数没有被正确调用,出现了这个问题。我在声明函数后立即调用该函数,这非常有效。它循环遍历数据并将元素附加到DOM中 但是当我提交表单#addapplicationform时,它运行的jQuery post函数工作正常,但是updateMyApps函数在这种情况下似乎工作不正常 console.log(“测试”)似乎总是被调用。即使在提交表格时。但是由于某些原因,get请求的回调函数在页面加载时只调用一次 <script> functi
updateMyApps
中的jQueryget
函数没有被正确调用,出现了这个问题。我在声明函数后立即调用该函数,这非常有效。它循环遍历数据并将元素附加到DOM中
但是当我提交表单#addapplicationform
时,它运行的jQuery post函数工作正常,但是updateMyApps
函数在这种情况下似乎工作不正常
console.log(“测试”)代码>似乎总是被调用。即使在提交表格时。但是由于某些原因,get请求的回调函数在页面加载时只调用一次
<script>
function updateMyApps() {
console.log("Test"); //Always works
$.get("/api/clients", function(data) {
console.log(data); //Works first time
$("#myapps").html("<h4>My Applications</h4>");
data.forEach(function (item) {
var element = '<div>' + item.name + '</div>' + '<div>' + item.id + '</div>' + '<div>' + item.secret + '</div>' + '<a href="/edit"><input type="submit" class="submit btn btn-primary form-control" value="Edit" style="width: 100px;"></a>';
$("#myapps").append(element);
});
});
}
updateMyApps(); // Works perfectly
$("#addapplicationform").submit(function( event ) {
event.preventDefault();
$.post("/api/clients", $( "#addapplicationform" ).serialize(), function () {
updateMyApps(); //Doesn't work
});
});
</script>
函数updateMyApps(){
console.log(“Test”);//始终有效
$.get(“/api/clients”,函数(数据){
console.log(数据);//第一次工作
$(“#我的应用程序”).html(“我的应用程序”);
data.forEach(功能(项){
var元素=“”+item.name+“”+item.id+“”+item.secret+“”+;
$(“#myapps”)。追加(元素);
});
});
}
updateMyApps();//完美地工作
$(“#添加应用程序表单”).submit(函数(事件){
event.preventDefault();
$.post(“/api/clients”,$(“#addapplicationform”).serialize(),函数(){
updateMyApps();//不起作用
});
});
你知道为什么get请求回调只触发一次吗
编辑
忘了提这件事了。看起来只有在页面加载时才会调用GET/api/clients
。当提交表单时,它甚至没有击中我的后端
编辑2
意识到这是一个缓存问题。添加$.ajaxSetup({cache:false})代码>似乎已经解决了这个问题。还将该问题标记为与我在何处找到该代码片段的问题重复。尝试在提交中添加一个console.log
<script>
function updateMyApps() {
console.log("Test"); //Always works
$.get("/api/clients", function(data) {
console.log(data); //Works first time
$("#myapps").html("<h4>My Applications</h4>");
data.forEach(function (item) {
var element = '<div>' + item.name + '</div>' + '<div>' + item.id + '</div>' + '<div>' + item.secret + '</div>' + '<a href="/edit"><input type="submit" class="submit btn btn-primary form-control" value="Edit" style="width: 100px;"></a>';
$("#myapps").append(element);
});
});
}
updateMyApps(); // Works perfectly
$("#addapplicationform").submit(function( event ) {
event.preventDefault();
console.log("works!!!"); // <-- add this console.log
$.post("/api/clients", $( "#addapplicationform" ).serialize(), function () {
updateMyApps(); //Doesn't work
});
});
</script>
函数updateMyApps(){
console.log(“Test”);//始终有效
$.get(“/api/clients”,函数(数据){
console.log(数据);//第一次工作
$(“#我的应用程序”).html(“我的应用程序”);
data.forEach(功能(项){
var元素=“”+item.name+“”+item.id+“”+item.secret+“”+;
$(“#myapps”)。追加(元素);
});
});
}
updateMyApps();//完美地工作
$(“#添加应用程序表单”).submit(函数(事件){
event.preventDefault();
console.log(“works!!!”);//是的,console.log可以工作。但这并不能回答我的问题。updateMyApps
中的get
回调函数仍然没有被调用。我只是想看看你的错误……为了调试,如果你添加一个console.log()在你的$.post中?它有效吗?是的。post被调用。updateMyApps
被调用。console.log(“测试”);
每次都会被调用。但是get
回调只会被调用一次,而不是两次。它应该在页面加载和表单提交时被调用。您是否检查了服务器端没有收到任何错误?是否在网络选项卡的控制台上触发了$.get?它看起来甚至没有击中我的服务器。试试这个,然后再试一次检查失败处理程序是否被激发…$.get(“/api/clients”,函数(数据){}).fail(函数(){alert(“error”);});甚至没有调用.fail
函数。尝试检查是否至少真的调用了$.get(“/api/clients”,函数(数据){}).fail(函数(){alert(“error”);});