2011-12-14 3 views
0

У меня есть мобильное приложение jquery, которое извлекает данные из нашего mysql db с помощью JSONP. Данные потянуты, но проблема возникает, когда я возвращаюсь к предыдущей «странице» в своем приложении, а затем нажимаю на другую опцию, она удваивает данные на следующем экране, и она будет просто укладывать данные в стек столько раз как я это делаю. Что мне не хватает?JQuery Mobile и JSONP

Приложение не выглядит правильно в любых браузерах, но оно отлично смотрится в симуляторе ios или симуляторе appmobi. При необходимости я могу опубликовать код, просто знаю, что он не будет выглядеть правильно в вашем браузере.

Спасибо за любую помощь вы можете предоставить

$('#two').bind('pagecreate',function(event){ 

var img = getUrlVars()["st"]; 
var photo = $('#img'); 

$.ajax({ 
    type: 'GET', 
    url: 'http://serverhidden/json/img.php?st='+img, 
    dataType: 'jsonp', 
    success: function(data) { 
    $.each(data, function(i,item){ 
    var image = '<img class="stmap" src="images/states/lrg/'+item.img+' "/>';     

     photo.html(image); 

     });    
    }, 
     error: function(e) { 
     //called if there is an error 
     //console.log(e.message); 
    } 
}); 
}); 
+0

Что значит «удвоить ваши данные»? Дом может оставаться неизменным между «страницами» (фактическими страницами или разными экранами на одной странице?), И вы загружаете jsonp более одного раза. – reconbot

+0

Да, это может быть неправильный термин. Я имею в виду, если я выберу, например, штат Калифорния, он дважды покажет информацию для Калифорнии, если я вернусь и снова нажмите ссылку для этого состояния. И если я выберу другое состояние, он снова отобразит Калифорнию, но теперь он показывает это три раза, и он просто так постоянно добавляет, что каждый раз Все страницы являются одной HTML-страницей, поэтому я использовал термин «страницы» – theschwag

+0

Это звучит все больше и больше, как событие было подписано каждый раз, когда вы переходите на страницу. – Dessus

ответ

0

Убедитесь, что вы не подписываете свое событие несколько раз. Это кажется глупым, но это легко сделать.

Я бы порекомендовал вам добавить журналы на сайт JQM, чтобы вы могли видеть, сколько раз обновляется ваш сайт.

Вы также должны знать, что для обновления страницы JQMobile часто требуется вызов метода для обновления содержимого после отображения страницы. См. Здесь: jQuery Mobile rendering problems with content being added after the page is initialized

Надеюсь, что это поможет.

0

Так что без какого-либо кода из проекта это выстрел в темноте, но кажется, что вы заселить псевдо-страницу с информацией о pageshow с .append() вызов. Вместо того, чтобы использовать .append(), используйте .html(), поскольку он заменит уже существующую информацию, а не добавит к ней.

Если каждое состояние имеет отдельную страницу, то вы можете привязываться к событию pagecreate (или аналогичному), поэтому данные будут добавляться только один раз, а не на каждое событие pageshow.

+0

Я думаю, что вы на что-то. Посмотрите назад на мой код, который я добавил для моей псевдо-страницы, называемой #two. Он получает изображение с сервера и возвращается обратно в приложение. – theschwag