【问题标题】:Strange ajax behavior with Zepto and CordovaZepto 和 Cordova 的奇怪 ajax 行为
【发布时间】:2016-03-05 21:16:13
【问题描述】:

我正在进行的 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(data) 来查看数据是否通过,然后它不仅会记录到控制台,还会用返回的数据正确填充 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(datos) 是我修复的一部分。

【问题讨论】:

  • 您可以在您的列表中添加postCarga 的相关部分吗?只是填充 div 的行。谢谢。

标签: javascript ajax cordova zepto


【解决方案1】:

好的,我刚刚找到原因了。我通过绕过接收到的数据来测试不同的东西,只是尝试 $("#pagina").html("Hello") 和其他东西,在所有这些工作之后,我通过了 Ajax 调用返回的 html 和这就是我找到答案的地方。

我将 API 的返回更改为仅发送

<h1>Hello</h1>

它运行良好,之后我手动构建了整个 HTML 字符串,直到我有了脚本生成的副本,有时它会加载,有时不会,这仍然很奇怪。

我通过各种 lint 和检查器传递返回的 HTML,其中只有一个返回错误,块中的一个图像返回 404,所以我从返回的 HTML 中删除了该图像(并且只有该图像)加载正常。

从本质上讲,似乎当 Ajax 设置为 html (dataType: 'html') 时,整个块中的每一件事 - 直接或远程 - 都必须是有效的 html 并在调用时返回成功,否则它将被默默地忽略。

将 dataType 更改为 "text" 使其跳过检查并按预期将所有内容注入 div。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多