我正在制作Ajax电话时出现了一些奇怪的事情,我无法弄清楚为什么会发生这种情况,也许有人可以解决这个问题。
这是电话
$.ajax({type:'POST', url: apiURL+"misc/"+cola, headers: {'apikey':localStorage.apiKey}, dataType: 'html', success:function(data) {
$("#pagina").html(data);
postCarga("pagina");
}, error: function() {
sinConexion();
}});
现在,这应该从Ajax收到“数据”并用它填充div#pagina,但div保持为空。
这是一个奇怪的部分,我调用了console.log(数据)来查看数据是否通过,然后它不仅记录到控制台,而且正确地用返回的数据填充div#pagina。
如果我只是尝试直接填充它,div会保持为空,但如果我事先做了什么(甚至像var xxx = data;),它会被正确填充。
我通过将填充函数移动到postCarga来解决这个问题,所以我的最终代码如下所示:
$.ajax({type:'POST', url: apiURL+"misc/"+cola, headers: {'apikey':localStorage.apiKey}, dataType: 'html', success:function(data) {
postCarga(data,"pagina");
}, error: function() {
sinConexion();
}});
,但这感觉很奇怪。
//编辑// 这是整个功能
function postCarga(datos,que) {
$("#"+que).html(datos).animate({top:'0%'},350,'ease-in',function() { $("#cargando").css("display","none"); });
}
,最初,它所做的只是动画,然后隐藏加载程序,html(数据)是我修复的一部分。
答案 0 :(得分:0)
好的,我刚刚找到原因。我正在测试不同的东西,一边踩着收到的数据,然后尝试$("#pagina")。html(" Hello")和其他东西,在所有这些工作后我通过Ajax调用返回的html以及我找到答案的地方。
我将API的返回更改为
int TotalJoins = db.UserRoles.Count();
它工作正常,之后我手动构建了整个HTML字符串,直到我得到了脚本生成的副本,有时它会加载,有时不加载,这仍然是陌生人。
我通过各种lint和checkers传递了返回的HTML,并且只有其中一个返回错误,块中的一个图像返回404,所以我从返回的HTML中删除了该图像(并且只有该图像)装好了。
从本质上讲,似乎当Ajax设置为html(dataType:' html')时,整个块中的每一件事 - 直接或远程 - 必须是有效的html并在返回成功时返回被叫,或者它会被默默地忽略。
将dataType更改为" text"使它跳过该检查,并按预期将所有内容注入div。