2016-06-21 5 views
-2

Ich habe eine Python-Funktion, die JSON-Dateien anhand der Argumente generiert, die an sie übergeben werden.So rufen Sie eine Python-Funktion auf einem Ubuntu auf 12.04.5 LTS

Wir haben uns entschieden, das Argument Auswahl Teil einer Webseite in HTML zu machen. Danach wollen wir die Argumente an die Python-Funktion auf dem Server übergeben. Die Funktion generiert die spezifischen JSON-Dateien für die Anzeige des Browsers.

Ich habe mich umgesehen und Leute verweisen HTTP-Anfragen. Ich bin einfach darin versagt, wie ich meine spezifische Funktion aufrufen soll.

fand ich einen einfachen Code, der HTTP-Anforderung verwendet, aber ich bin verloren, was ich ändern sollte, um es für die Minen funktioniert

<button id="demo" onclick="onClickButton()" type="button">Submit the order!</button> 

<script> 
function onClickButton() { 
    xhttp.open("GET", "demo_get.asp", true); 

ich zu bin verloren, was genau zu tun gebe ich statt " demo_get.asp ". Wie kann ich diesen Code ändern, damit er die Python-Funktion auf dem Server ausführt?

Jede Hilfe wird geschätzt. Ich danke dir sehr. Ich weiß, dass die Frage irgendwie neu ist.

Wenn Sie nützliche Links oder Tutorials, die ich sehr dankbar sein wird

Antwort

0

Nach einer Woche der Forschung, entdeckte ich, dass ich hatte die folgende

ich die Python-Funktion Kolben mit aufgebaut zu tun, und ich folgte dieses Tutorial mir

http://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask

Dann anstelle von Cur loszulegen l (was in dem Tutorial verwendet wird)

Ich habe AJAX jquery statt AJAX seit dieser Reaktion auf Stackoverflow verwendet. Ajax erlaubt nur Antworten von derselben Domäne. Suchen Sie einfach die Frage "Wie kann ich domainübergreifende Web-API mit Ajax aufrufen?"

implementiert ich den Code auf folgende Weise

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 
     $.ajax({ 
      contentType : "application/json", 
      dataType : "json", 
      url : "http://localhost:8000/todo/api/v1.0/tasks", 
      type: "GET", 
      //data : jsonfilename_with_arguments, 
//if you want to post then you have to //change the type to post and send 
//your arguments in a json file 
      success: function(data, textStatus, jqXHR) 
    { 
     alert("Data: " + JSON.stringify(data) + "\nStatus: " + textStatus); 
    }, 
    error: function (jqXHR, textStatus, errorThrown){ 
     console.log(textStatus) 
    } 
     }); 
})}); 
</script> 
</head> 
<body> 

<div><h2>Hope it works</h2></div> 

<button>Display Alarm with content</button> 

</body> 
</html> 

ich die URL der IP-Adresse des Servers geändert und ich änderte auch den Hafen, wo mein Code ausgeführt wurde. Es ist auf die folgende Weise

http://IPAddresss:PORT/todo/api/v1.0/tasks

Sie können den folgenden Fehler beim ersten Versuch erhalten, wenn eine andere Domain

XMLHttpRequest Aufruf kann nicht IPaddress laden: Port/todo/api/v1.0/Aufgaben. Die Antwort auf die Preflight-Anforderung übergibt die Zugriffskontrollprüfung nicht: Nein Der 'Access-Control-Allow-Origin'-Header ist auf der angeforderten -Ressource vorhanden. Origin 'null' ist daher nicht erlaubt.

Um dies zu beheben, dass Sie in Ihrem Server Python-Code der folgende Code Acess-Control (dies ist, wie es mit Kolben arbeitet) zu ermöglichen

####################Allow Cross Reference######################## 
@app.after_request 
def after_request(response): 
    response.headers.add('Access-Control-Allow-Origin', '*') 
    response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization') 
    response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE') 
    return response 
####################Allow Cross Reference########################