2017-06-14 3 views
3

Ich habe mehrere Eingabe-Tags, meine Aufgabe ist es, die vom Benutzer eingegebenen Werte zu sammeln und es zurück an den Server zu senden. Ich benutze Django als meinen Rahmen. Es gelingt mir, die Daten an die Client-Seite zu senden (Javascript). Um die Daten von JavaScript-Funktion zu meiner Python-Funktion zurückzugeben, habe ich XMLHttpRequest verwendet. Ich habe meinen Code unten hinzugefügt:Versucht, Wert von Javascript zu Python-Server zu senden

<html> 
<head> 
<style>label{ text-align:center; width:250px; color:blue; display:inline-block}</style> 
<script type="text/javascript" src="'+url_read+'"></script> 
<script> 
function submit_this() 
{ 
var i,j;var arr=[]; 
for(i=0; i<Hello.length; i++) 
{ 
arr[i]=[]; 
for(j=0;j<Hello[i].length; j++) 
{ 
arr[i].push(document.getElementById(Hello[i][j]).value); 
} 
} 
alert(document.getElementById(Hello[1][0]).value); 
xmlHttpReq =  new XMLHttpRequest(); 
xmlHttpReq.open('POST', '/button_click',true);  
xmlHttpReq.send('w=' + encodeURI(arr)); 
} 
</script> 
</head> 
<body> 
<center> 
<button id="submit_button" onclick="submit_this();" value="Submit">Submit</button> 
</center> 
</body> 
</html> 

Der obige Code in einer html_string genannt Zeichenfolge gespeichert wird. Hallo ist ein JSON-Objekt, das aus der Datei gelesen wird, die von der Variablen url_read angegeben wird. Es wurde mit Python gelöscht. Der Plan war, HttpResponse zu verwenden, um die html_string zu senden und die HTML-Seite im Gegenzug zu rendern.

Ich verstehe, dass ich eine POST-Funktion in einer der Klassen in views.py machen muss. Aber nicht in der Lage zu verstehen, wie man dieses Problem angeht.

Ich muss irgendwie die JavaScript-Datenstruktur namens arr zurück zur Serverseite senden. Der Hauptbezweifelt ist, wo kann ich meinen Code, wo ich den Wert von der Javascript-Funktion veröffentlicht lesen kann. Ich möchte zu einer neuen Seite navigieren, sobald der Submit Button gedrückt wurde und in Django hat jede URL eine neue Funktion (in view.py) die damit verbunden ist. Soll ich es darin platzieren?

+1

formatieren Sie bitte Ihren Code. – Ravi

+0

Tippfehler in Ihrem js. Ändern Sie in 'xmlHttpReq.open ('POST', '/ button_click', true);' –

+0

Was ist 'Hallo' in Ihrem Code. ist es irgendwo anders deklariert? frage mich nur, ob das ein Schlüsselwort in js oder etc ... ist? – Haranadh

Antwort

0

Hier ist ein Beispiel, in dem ich Werte an (Django) Python-Server mit JS senden und empfangen HTML Vorlage gerendert. Ich verwende UL-Tag mit ID #Nearby, um HTML in einem HTML zu laden. Ajax Erfolg kehrt html von django Blick durch URL-Endpunkt gemacht '/ getGopoints /'

template.html

<div class="row"> 
    <div> 
     <ul id="Nearby"> 

     </ul> 
    </div> 
</div> 

<script> 
$(document).ready(function(){ 
      $('#dataTables-example1').DataTable({ 
        responsive: true 
      }); 
      getLocation(); 
    }); 
function getLocation() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(showPosition); 
     } 
    } 


function showPosition(position) { 
     $.ajax({ 
       url : '/getGopoints/', // the endpoint 
       type : 'GET', // http method 
       data : { 'lat' : position.coords.latitude, 
         'lon' : position.coords.longitude, 
         'csrfmiddlewaretoken': '{{csrf_token}}' 
       }, // data sent with the post request 

       // handle a successful response 
       success : function(data) { 
        $('#Nearby').html(data); 
       }, 
       dataType: 'html' 

     }); 
    } 
</script> 

urls.py

url(r'^getGopoints/$',views.getGopoints, name='getGopoints'), 

views.py

def getGopoints(request): 
    lat = str(request.GET['lat']) 
    lon = str(request.GET['lon']) 
    pnt=fromstr('POINT(%s %s)' %(lon,lat)) 
    with_in_distance = 20 
    go_points = GoPoint.objects.filter(point__distance_lte=(pnt, D(km=with_in_distance))) 
    context = RequestContext(request, 
     {'go_points':go_points, 
     'with_in_distance':with_in_distance, 
     }) 
    return render_to_response('nearby.html', 
          context_instance=context) 
Verwandte Themen