2015-12-01 1 views
0

Что-то странное происходит с призывом Ajax, который я делаю, и я не могу понять, почему это происходит, может быть, кто-то может пролить свет.Странное поведение ajax с Zepto и Cordova

Это вызов

$.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(); 
}}); 

, но чувствует себя странно.

// EDIT // Вот вся функция

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 («Hello») и другие вещи, после того, как все работавшие я пошел через html, возвращенный вызовом Ajax, вот где я нашел ответ.

Я изменил возвращения из API для отправки только

<h1>Hello</h1> 

и он работал отлично, потом я вручную создал весь HTML строку, пока я не углеродную копию того, что создается сценарий, иногда он будет нагрузки, а иногда и нет, что было еще страннее.

Я передал возвращенный HTML через различные символы и шашки, и только одна из них вернула ошибку, одно из изображений в блоке возвратило 404, поэтому я удалил это изображение (и только это изображение) из возвращаемого HTML и он загружен отлично.

По существу, кажется, что когда Ajax установлен в html (dataType: 'html), каждая вещь - прямая или удаленная - во всем блоке должна быть действительной html и возвращать успех при вызове или будут молча игнорироваться.

Изменение типа dataType на «text» позволяет пропустить эту проверку и просто вставить все в div, как предполагалось.