2016-11-08 5 views
0

Ich bin neu in Javascript, und dieses Problem kann trivial sein, aber ich brauche Hilfe. Mein Ziel ist es, einen Post auf einem Python-Server basierend auf Tornado zu senden.Jquery Beitrag Antwort nicht verfügbar

In der folgenden Funktion:

var machin = $.post('/room/testroom', function(data) { 
     truc = data; 
     return truc; 

ich nie den Inhalt truc zurück. Diese Variable enthält eine URL, die zum Erstellen einer neuen Websocket-Verbindung verwendet wird.

Wenn ich tun console.dir(machin); sehe ich die gewünschte responseText mit der gewünschten URL in der Konsole, aber ich bin nicht in der Lage, es außerhalb der Konsole zu bekommen.

Die variable Daten selbst innerhalb der Funktion meiner gewünschten Daten hat, als ob ich tun: alert(data) ich eine Warnung mit der gewünschten URL zu sehen.

Fühlen Sie sich frei, mich für Details zu fragen, da ich vielleicht nicht ganz klar bin.

Server-Seite, meine Python-Code ist dieses:

def post(self, RoomName): 
    print 'je poste' 
    db = connect(host=config.SQLSERVER, user=config.SQLUSER, passwd=config.SQLPASS, db=config.SQLDB) 
    cursor = db.cursor() 
    uri = self.request.uri 
    url = uri.split('/') 
    RoomName = url[2] 
    sql = 'SELECT RoomID FROM abcd_un WHERE RoomName = %s', [RoomName] 
    cursor.execute(*sql) 
    RoomID = cursor.fetchone() 
    print 'RoomID', type(RoomID) 
    RoomID = str(RoomID[0]) 
    RoomID = RoomID.decode() 
    fullurl = 'ws://' + self.request.host + '/socket/' + RoomID 

    #print uri 
    db.close() 
    wsurl = { 
     'url': fullurl, 
    } 
    wsurl_encoded = tornado.escape.json_encode(wsurl) 
    self.write(wsurl_encoded) 
+0

Frage an refleched Änderung bearbeitet auf Server-Seite Code für JSON-Codierung – Protheine

Antwort

0

Versuchen:

var machin = function(){ 
    $.post('/room/testroom', function(data) { 
    truc = JSON.parse(data); 
    return truc; 
} 

nun die Funktion aufrufen:

var response = machin(); 
+0

Der Server Antwort war nicht beabsichtigt, JSON zunächst formatiert werden, aber geben Sie mir ein paar Momente bitte, ich werde den Server-seitigen Code dann Test ändern dass :) – Protheine

+0

Ja :), verwenden Sie können jsonify, um die Daten im JSON-Format zurückgeben. – MurthyAdapa

+0

Aber wie habe ich die Antwort draußen in der Variable machin, jetzt? – Protheine

0

Versuchen:

var machin; 
 
$.post('/room/testroom', function(data) { 
 
    machin = JSON.parse(data); 
 
    return True; 
 
})

+0

Danke für diese Antwort, aber sieht aus, als ob ich immer noch ein Problem habe, machin kehrt zurück undefined wenn ich es mit console.log (machin) suche – Protheine