แผนที่ Ajax และ Google ไม่ทำงานใน Django

ฉันใช้ django-easy-maps เพื่อแสดงแผนที่บนหน้าเว็บของฉัน และฉันมีลิงก์บางส่วนบนแถบด้านข้าง และเมื่อผู้ใช้คลิกลิงก์นั้น ฉันต้องการรีเฟรชแผนที่ด้วยที่อยู่ในลิงก์

เทมเพลต django ของฉันของ donate.html คือสิ่งนี้

{% block optionalcode %}
<script>
$(document).ready(function() {
$('.link').click(function() {
var n = $(this).attr("name");
n=n.replace(/\s/g,'+');
$('#results').html('&nbsp;').load('/donate/?n=' + n);
});
});
</script>


{% endblock %}

{% block contenttitle %}{% endblock %}

{% block content %}     
<div class="container-fluid">
<div class="row-fluid">
<div class="span8">


<div class="hero-unit" style="padding:10px 10px 10px 10px">

<div id="results">
<b> <pre class="prettyprint
linenums"> {{addr}} </pre> </b>
{% load easy_maps_tags %}
{% easy_map addr 725 400 %}     
</div>

</div>
</div>





{% endblock %} 

{% block sidebar %} 
<div class="span4">
    <div class="hero-unit" style="padding:10px 10px 10px 10px">

        <div class="accordion" id="accordion2">

       <div class="accordion-group">
              <div class="accordion-heading">
                <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="/th#collapseOne">
                  North Delhi
                </a>
              </div>
              <div style="height: 0px;" id="collapseOne" class="accordion-body collapse">
                <div class="accordion-inner">
                  <ol>
                  <li><a class='link' href="/th#" name="Some name1">Some link1</a> </li>
                  <li><a class='link' href="/th#" name="Some name2">Some link2</a> </li>




                  </ol>
                </div>
              </div>
            </div>


</div>
{% endblock %}

และรหัสมุมมองของฉันอยู่ที่นี่:

from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponse

def ajax_req(request):
    if request.is_ajax():
        n = request.GET.get('n')
        return render_to_response('donate_res.html', {'addr': n},context_instance=RequestContext(request))


    else :
        return render_to_response('donate.html', {'addr': "Some Address"},context_instance=RequestContext(request))

และ donate_res.html เป็นเพียงส่วนเล็กๆ ที่แทนที่โค้ด #results div

<b> <pre class="prettyprint linenums"> {{addr}} </pre> </b> 
  {% load easy_maps_tags %} 
  {% easy_map addr 725 400 using "easy_maps/map.html"%}

ปัญหาคือเมื่อฉันคลิกลิงก์ ข้อมูลจะถูกส่งกลับไปยังเพจ ฉันรู้สิ่งนี้เพราะฉันสามารถเห็นที่อยู่แต่แผนที่ไม่แสดง การดูคอนโซลนักพัฒนาเว็บอย่างรวดเร็วใน Firefox ทำให้เกิดข้อผิดพลาดนี้

A call to document.write() from an asynchronously-loaded external script was ignored. @ http://127.0.0.1:8000/donate/

โปรดบอกฉันว่าฉันทำอะไรผิดหรือวิธีแก้ไขปัญหาเพื่อลบข้อผิดพลาดนี้...ฉันยังใหม่กับ Django


person Dhiraj Thakur    schedule 15.07.2012    source แหล่งที่มา
comment
ข้อความ addr เป็นข้อความหรือจุด?   -  person Maqsood    schedule 17.07.2012
comment
@Maqsood : ที่อยู่เป็นข้อความ   -  person Dhiraj Thakur    schedule 17.07.2012


คำตอบ (1)


ดูคำถามนี้. ควรตอบว่าทำไมมันไม่ทำงาน

โดยส่วนตัวแล้วฉันไม่เห็นด้วยกับวิธีที่คุณทำเช่นนี้ มีการสร้างและโหลดแผนที่ใหม่ทุกครั้งที่คุณคลิกลิงก์ ซึ่งไม่เพียงไม่มีประสิทธิภาพเท่านั้น แต่ยังรวมถึงในระยะยาวที่คุณอาจพบปัญหาที่ถูกจำกัดด้วยจำนวนครั้งสูงสุดที่คุณสามารถโหลดแผนที่จาก Google

ฉันอยากจะแนะนำให้คุณสร้างจาวาสคริปต์ของคุณเองเพื่อโหลดแผนที่และที่อยู่หรือดูโค้ดที่ django-easy-maps สร้างขึ้นและดูว่าแทนที่จะสร้างคอนเทนเนอร์ขึ้นใหม่และดาวน์โหลดจาวาสคริปต์แผนที่ซ้ำหรือไม่ คุณสามารถตั้งค่า ศูนย์กลางของแผนที่หรือจุดที่เครื่องหมายควรอยู่

ฉันสามารถช่วยได้มากกว่านี้หากคุณสามารถวางโค้ดที่ django-easy-maps สร้างขึ้นใน {% easy_map addr 725 400 using "easy_maps/map.html"%}

person Maqsood    schedule 16.07.2012
comment
html ที่แทนที่จะแนบตัวฟังเหตุการณ์ในเหตุการณ์โหลด google.maps.event.addDomListener(window, 'load', initialize_map_14); ซึ่งได้เริ่มทำงานแล้วเช่นกัน คุณเพียงแต่พยายามแสดงรายการสถานที่และเปลี่ยนแปลงรายการเท่านั้นใช่หรือไม่ คุณมีสถานที่กี่แห่ง? จะดีกว่าถ้าจัดเก็บข้อความตำแหน่งและพิกัดในฐานข้อมูล รับการตอบกลับใน JSON จากนั้นใช้ setTitle(title:string) และ setPosition(latlng:LatLng) เพื่อย้ายเครื่องหมายและเปลี่ยนชื่อ นี่จะเร็วขึ้นมากเช่นกัน ฉันเคยทำสิ่งนี้ใน Django แล้ว - person Maqsood; 20.07.2012
comment
คุณช่วยแบ่งปันรหัสนั้น...ที่คุณทำสิ่งนี้ได้ไหม...ถ้ามันโอเคกับคุณ ขอบคุณ.. - person Dhiraj Thakur; 04.08.2012