2015-12-01 46 views
0

我正在做一個Ajax調用,出現了一些奇怪的事情,我無法弄清楚它發生的原因,也許有人可以闡明一些事情。Zepto和科爾多瓦奇怪的阿賈克斯行爲

這是呼叫

$.ajax({type:'POST', url: apiURL+"misc/"+cola, headers: {'apikey':localStorage.apiKey}, dataType: 'html', success:function(data) { 
    $("#pagina").html(data); 
    postCarga("pagina"); 
}, error: function() { 
    sinConexion(); 
}}); 

現在,應該採取「數據」從阿賈克斯接收並填寫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(DATOS)是我的修補程序的一部分。

+0

您可以在列表中添加'postCarga'的相關部分嗎?只是填充div的行。謝謝。 – toddmo

回答

0

好吧,我剛剛找到原因。我測試了不同的東西,通過旁路接收的數據,並試圖$(「#pagina」)。html(「你好」)和其他東西,所有這些工作後,我去槽通過Ajax調用返回的HTML和那是我找到答案的地方。

我改變從API返回僅發送

<h1>Hello</h1> 

它工作得很好,後來我手動建立起來的整個HTML串,直到我有產生什麼樣的劇本的翻版,有時它會有時候不是,這還是陌生人。

我通過各種lint和checkers傳遞了返回的HTML,並且只有其中一個返回了錯誤,塊中的一個圖像返回了404,因此我從返回的HTML中移除了該圖像(僅限該圖像),並且它裝得很好。從本質上看,當Ajax設置爲html(dataType:'html')時,整個塊中的每一件事(直接或遠程)都必須是有效的html,並且在調用時返回成功,或者它將被默默忽略。

將dataType更改爲「text」使其跳過該檢查並將所有內容注入到div中。