Arkadaşlar merhaba. jquery mobile kullanıyorum.

<div data-role="content" style="padding: 15px" id="newsList">

data-role gibi attribute'ler var. Fakat ben bunları dinamik bir şekilde yazdırmak zorundayım.

String html = 
    "<ul data-role=\\"listview\\" data-divider-theme=\\"b\\" data-inset=\\"false\\" >" +
        "<li data-theme=\\"c\\">" +
            "<a href=\\"#page12\\" data-transition=\\"slide\\" onclick=\\"productDisplay('" + productData.getId() +"')\\" >" +
                productData.getTitle() +
            "</a>" +
        "</li>" +
    "</ul>";

    sb.append(html);
    writer.appendStr(sb.toString());
    Apl.sendPacket(response, writer);
    return null;

bu şekilde istediğim görüntüyü elde edemiyorum sanırım jquery mobile sayfa açılmadan kendi yorumluyor. Bunun görüntülemem için ne yapabilirim?

soruldu: 25 Tem '12, 09:08

scarface_tnt's gravatar image

scarface_tnt
178364348
cevap kabul oranı: 11%


iyide iste bunu zaten ajaxla yapacaksin. Yani senin Servlet in sadece bir JSON verisi gönderecek, sen de onu, ul - tag larinin arasina yerlestireceksin. JQueryMobile nin kendi demo sayfasinda var bununla ilgili örnek. Assagidaki kod, ajax la ürün listesini okuyup, sayfada var olan listenin icine dolduruyor :

$.ajax({
url: "rest/product/list",
type : "GET",
contentType : "application/json"
}).done(function(data) { 
   if(data == null){
       alert("No Data");
       return;
   }

   var ul = $("#productList");
   ul.listview();

   $.each(data, function(index, product) {
      var li = 
      $('<li><a href="product_details.html?id=' + product.id + '">' +
            '<div class="rowContent">'+
                '<img class="productImage" src="images/Resimler/' + product.photo1 + '" />' +
                '<span class="productTitle">' + product.title + '</span>' +
                '<div class="productPriceInfo">' +
                    '<div>'+ product.price + '</div>' +
                    '<div>'+ product.shipmentFee + '</div>' +
                    '<div>'+ product.comments + ' Comments</div>' +
                '</div>' +
            '</div>' +
         </a></li>');

      ul.append(li);
   });

   ul.listview('refresh');

});

ve Html dosyanin icin de ;

        <div data-role="content" style="padding: 10px 0px 3px 3px">
            <ul id="productList" data-role="listview"></ul>                
        </div>

yazman yeterli.

permanent link

cevaplandı: 27 Tem '12, 04:24

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

Tamamdır çok teşekkür ederim :) JSON'da bir sıkıntı çekiyorum şimdi de. Düz metin yazdırabiliyorum ama ajax'dan gelene cevap olmuyor.

{"product":[{"id": 23000000000007366},{"id": 23000000000009073},{"id": 23000000000007638},{"id": 23000000000010598},{"id": 23000000000007366}]}

Ajaxdan gelen JSON stringi. Kullanırken de sizin attığınız örnekteki gibi yazdım. Tabi product.id yazdım sadece.

(01 Ağu '12, 09:12) scarface_tnt scarface_tnt's gravatar image

sorun benim dedigim gibi. ve yukarida yazdigim kod bu sorunu düzeltir kesinlikle. sen kodunu su sekilde yazmalisin :

$.ajax({
   url: "rest/product/list",
   type : "GET",
   contentType : "application/json"
}).done(function(data) { 
   if(data == null){
       alert("No Data");
       return;
   }

   var productArray = [];
   if (data['product'].length){
       productArray = data['product'];
   } else {
       productArray.push(data['product'])
   }

   var ul = $("#productList");
   ul.listview();

   $.each(productArray, function(index, product) {
     var li = 
      $('<li><a href="product_details.html?id=' + product.id + '">' +
         '<div class="rowContent">'+
            '<img class="productImage" src="images/Resimler/' + product.photo1 + '" />' +
            '<span class="productTitle">' + product.title + '</span>' +
            '<div class="productPriceInfo">' +
                '<div>'+ product.price + '</div>' +
                '<div>'+ product.shipmentFee + '</div>' +
                '<div>'+ product.comments + ' Comments</div>' +
            '</div>' +
        '</div>' +
      </a></li>');

    ul.append(li);
 });

 ul.listview('refresh');

});

bu sekilde calismasi lazim. Malesef java web service, JQuery nin bekledigi gibi bir JSON datasi göndermiyor, each - funktionuyla üzerinden gecmek icin. Onu dönüstürmek gerekiyor. Bu problemi bende yasadim ve assagidaki gibi cözebildim.

permanent link

cevaplandı: 02 Ağu '12, 04:02

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

JQueryMobile, sayfa yüklenirken, sira jquery.js dosyasina geldiginde, sayfada ne varsa hazir olsun istiyor. Ve bu dosya yüklenirken de kendi ayarlarini yapiyor.

Yani sen söyle birsey yazsan :

<html>
<head>
    <meta name="viewport" content="width=device-width,initial-scale=1"/>
    <meta charset="utf-8" />

    <link rel="stylesheet" href="css/jquery.mobile-1.1.0.css" />

    <script src="js/jquery-1.7.2.js"></script>
    <script src="js/jquery.mobile-1.1.0.js"></script>        
</head>

<body>
    <!-- Dynamik Icerik -->
</body>

</html>

ilk önce js-dosyasi yüklenecegi icin ve senin dynamic iceriyin daha hazir olmadigindan, sorun oluyordur diye düsünüyorum.

Acaba JS-Dosyalarini sonradan yüklemeyi denedin mi ? Su sekilde örnegin :

<!DOCTYPE HTML>
<html>
<head>
    <meta name="viewport" content="width=device-width,initial-scale=1"/>
    <meta charset="utf-8" />

    <link rel="stylesheet" href="css/jquery.mobile-1.1.0.css" />      
</head>

<body>
    <!-- Dynamik Icerik -->

    <script src="js/jquery-1.7.2.js"></script>
    <script src="js/jquery.mobile-1.1.0.js"></script>  
</body>

</html>

Bu yazim sekli belki senin sorununu cözebilir, ayni zamanda da sayfanin hizli yüklenmesi bakimindan bir cok avantaji vardir.

permanent link

cevaplandı: 26 Tem '12, 08:38

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

Yalnız ben verileri ajax'la kullanıcıyla etkileşime geçtikten sonra div'in içine gömüyorum.

(26 Tem '12, 08:58) scarface_tnt scarface_tnt's gravatar image

Ozaman bu yöntem isine yaramaz. Ancak bütün bir html i de Servlet ten geri göndermen bana pek mantikli gelmedii. Bunun yerine sadece Veritleri tasisan da, java script le gerekli degisiklikleri yapsan olmuyor mu. sonucta JavaScript le yapacagin bisey yok gibi. StyleClass lari degistirisin, Linklerin URL lerini degistir, yada gösterilen bilgileri.

Hersey mümkün.

(26 Tem '12, 09:05) mceliksoy ♦ mceliksoy's gravatar image

Malesef Mehmet bey benim ajax'la gömmeye çalıştığım kod çok küçük bir kısım bütün HTML değil. < ul > taglari arasına döngüyle < li > taglarını yerleştirmeye çalışıyorum.

(26 Tem '12, 14:53) scarface_tnt scarface_tnt's gravatar image

Merhaba, assagidaki kod, senin bu problemini cözer. Burdaki Problem,

{"product":[{"id": 23000000000007366},{"id": 23000000000009073},{"id": 23000000000007638},{"id": 23000000000010598},{"id": 23000000000007366}]}

bu bir dizi degil, JQuery nin each funtionu ile ulasabilecegin. Dikkat edersen sen

$.each(data, function(index, product) {

yazdiginda geriye, teker teker Product lar dönmüyor. Onun yerine tek bir nesne dönüyor. Eger dönen deger su sekilde olsaydi :

{{"id": 23000000000007366},{"id": 23000000000009073},{"id": 23000000000007638},{"id": 23000000000010598},{"id": 23000000000007366}}

sorun olmazdi. Ama java herzaman Web service den bu sekilde deger döndürüyor ve bu yapiyi assagidaki kod la istedigin sekle cevirebilirsin.

        var productArray = [];
        if (data['product'].length){
            productArray = data['product'];
        } else {
            productArray.push(data['product'])
        }
permanent link

cevaplandı: 01 Ağu '12, 10:08

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

değiştirildi: 01 Ağu '12, 10:09

Sorun olmaz dediğiniz kısmı elle string veri halinde oluşturdum. Buna rağmen each fonksyionu iterasyon yapmıyor. Bakmadığım kaynak kalmadı :(

(02 Ağu '12, 03:28) scarface_tnt scarface_tnt's gravatar image

product.id de sonuç vermiyor ama product dersem {{"id": ... her iterasyon bir karekter alıyor. sanırım JSON verisi olarak tanımıyor.

(02 Ağu '12, 03:33) scarface_tnt scarface_tnt's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×6

Soruldu: 25 Tem '12, 09:08

Görüntüleme: 1,410 kez

Son güncelleme: 02 Ağu '12, 04:02

powered by BitNami OSQA