2016-03-22 18 views
1

Ich suche nach einer Anleitung zu dem folgenden Problem. Ich versuche, aus einer Jade-Ansicht eine Zeichenfolge an den Server zu übergeben. Das Val wird am Frontend zurückgegeben, aber wenn ich versuche, es im Objekt zu speichern, werde ich zurückgegeben [object Object].Übergeben von Daten aus Sicht zu Express

Ich glaube, es ist um die Parameter variabel, aber ich kann nicht herausfinden, warum.

$(function(){ 
    $('#search').on('paste', function(){ 
    console.log('key up'); 

    setTimeout(function() { 
     var linkURL = $('#search').val(); 
     console.log(linkURL) 

     // EVERYTHING BREAKS HERE 
     var parameters = { search: $(this.target).val() }; 
     console.log('p' + parameters) 
     $.get('/searching',parameters, function(data) { 
     $('#results').html(data); 
     }); 
    }, 100); 

    }); 
}); 

Ansicht

extends layout 

block content 
    .container 
    h1 London Plans 
    form(method='post' action='/submit', class='plans', id='plans') 
     .form-group 
     label Do you have a link? 
     input.form-control(name='search', id='search' type='text', required='required') 

Ich denke, der ausdrückliche Code korrekt ist, die console.log kehrt undefined, unter der Annahme, da das Objekt gebrochen ist.

app.get('/searching', function(req, res){ 
// input value from search 
var val = req.query.search; 
console.log('val equals =' + ' ' + val); 

// testing the route 
// res.send("WHEEE"); 

}); 

Alle Zeiger in die richtige Richtung zum Debuggen des Objekts würden sehr geschätzt werden.

+0

Könnten Sie zeigen, was 'console.log (‚p‘+ Parameter)' Drucke? Könnten Sie auch genau erläutern, was "[object Object]" zurückgibt? –

+0

Die Variable 'parameters' gibt '[object Object]' zurück. Also die 'console.log ('p' + Parameter)' ist, wo ich den Fehler sehe. –

+0

Probieren Sie 'console.log ('p:', Parameter)' Beachten Sie das Komma anstelle des Pluszeichens. –

Antwort

1

Versuchen Sie, var parameters = { search: $(this.target).val() }; durch var parameters = { search: $('#search').val() }; zu ersetzen. Die this Variable innerhalb setTimeout() bezieht sich auf anderes Objekt als this innerhalb on().

Sie können { search: $(this.target).val() } auch durch { search: linkURL } ersetzen, da Sie das Ergebnis von $('#search').val() bereits in linkURL speichern.

Siehe auch jQuery API für on() Funktion: http://api.jquery.com/on/

Die Beispiele this Zeiger verwenden, statt zu schreiben this.target "wie es ist". Zum Beispiel könnten Sie in Ihrem Fall schreiben: $(this).val() statt $(this.target).val(). Verschieben Sie die Zeile var linkURL = $('#search').val(); über die setTimeout Zeile und ändern Sie sie in var linkURL = $(this).val();. Dann ersetzen Sie { search: $(this.target).val() } durch { search: linkURL }.

(Die this.target ist der Weg, um das Zielelement aus einem Ereignis-Objekt zu erhalten, aber wir haben hier nicht ein.)

Verwandte Themen