jquery
  • google-maps
  • 2010-01-29 17 views 5 likes 
    5

    Kullanıcıların google haritama yeni puan ekleyebilme özelliğini ekledim. Kodum:Google harita: jquery sorunuyla openInfoWindowHtml

    GEvent.addListener(map, "click", function(overlay,point) { 
        if (point) { 
         var myHtml = '<div id="addpoint"><form id="formadd" name="formadd_point" enctype="multipart/form-data" method="post" action="pointadd.php"><table><tr><td>Place:</td><td>' + point + '</td></tr><tr><td>Name:</td><td><input name="name" type="text" size="32" maxlength="200" /></td></tr><tr><td>Photo (jpg,png:2Mb):</td><td><input type="file" name="image" size="20" accept="image/png,image/jpeg" /></td></tr><tr><td></td><td><input name="pcoord" type="hidden" value="'+point+'" /><input type="hidden" name="MAX_FILE_SIZE" value="2000000" /><input name="subpoint" type="submit" value="Add" /></td></tr></table></form></div>'; 
         map.openInfoWindowHtml(point, myHtml); 
         $('#formadd').ajaxForm({ beforeSubmit: validate, target:'#addpoint' }); 
        } 
    }); 
    

    Yeniden yüklemeden AJAX posta olmalı. Ama bu çalışmıyor! Nedenini bilmiyorum. Belki bazı çatışma jquery.js ve google API var? Sayfayı yeniden yüklemeden nasıl başvuru yapılır?

    cevap

    1

    Eğer html başarıyla dom eklendi önce form oluşturmak için eventListener eklemeye çalışın. Deneyin:

    GEvent.addListener(map, "click", function(overlay,point) { 
        if (point) { 
         $('#formadd').live("load", function(){ 
          $(this).ajaxForm({ beforeSubmit: validate, target:'#addpoint' }); 
         }); 
    
         var myHtml = '<div id="addpoint"><form id="formadd" name="formadd_point" enctype="multipart/form-data" method="post" action="pointadd.php"><table><tr><td>Place:</td><td>' + point + '</td></tr><tr><td>Name:</td><td><input name="name" type="text" size="32" maxlength="200" /></td></tr><tr><td>Photo (jpg,png:2Mb):</td><td><input type="file" name="image" size="20" accept="image/png,image/jpeg" /></td></tr><tr><td></td><td><input name="pcoord" type="hidden" value="'+point+'" /><input type="hidden" name="MAX_FILE_SIZE" value="2000000" /><input name="subpoint" type="submit" value="Add" /></td></tr></table></form></div>'; 
         map.openInfoWindowHtml(point, myHtml); 
    
        } 
    }); 
    
    +0

    Cevabınız için çok teşekkür ederim. Problemin ne olduğunu anlamaya çalışırken çok zaman harcadım. Benim baş ağrımdı. Kodunuz map.openInfoWindowHtml'den sonra yazsam bile çalışıyor! Tek sorun, gönder düğmesine iki kez tıklamanız gerektiğidir. İlk tıklamadan sonra hiçbir şey olmaz. Ve form ikinci tıklamadan sonra Ajax tarafından gönderilir. Bu sorunu çözmeye yardımcı olduğunuz için çok teşekkür ederiz! – SPnova

    +0

    ajaxForm eklentisinin nasıl çalıştığından emin değilim ama sorunun ne olduğunu hayal ediyorum. Yazdığım ilk eventHandler olayı göndermek için bir işleyici ekler ve yanlış döndürür. Ve bence ajaxForm eklentisi, formun teslim edilmesini ele almak için eventHandler ekler. Bu yüzden ilk tıkla, ajaxForm olay işleyicisini çalıştırmaktan başka bir şey yapmıyor. Ve ajaxForm'un işleyicisinin ikinci tıklama tetikleyicisi. ajaxForm eventHandler'ı canlı bir etkinliğe ekleme konusunda bir çözüm bulabilirseniz, sorununuz gider. –

    +0

    Yukarıdaki kodumu değiştirdim. Belki bu işe yarayacak. –

    İlgili konular