使用Zepto和Cordova进行奇怪的ajax行为

时间:2015-12-01 20:00:04

标签: javascript ajax cordova zepto

我正在制作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(数据)是我修复的一部分。

1 个答案:

答案 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。