2016-03-22 17 views
1

ifade etmek için aktarıyorum Aşağıdaki sorun hakkında bilgi almak için araştırıyorum. Bir dize görünümünden sunucuya bir dize geçirmeye çalışıyorum. Değer ön tarafa döndürülüyor, ancak nesneye depolamaya çalıştığımda [object Object] döndürülüyor.Verileri

Parametre değişkeni etrafında kırıldığına inanıyorum ama nedenini çözemiyorum. Nesne kırık olduğu için

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') 

$(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); 

    }); 
}); 

Görünüm ben varsayarak console.log döner undefined, ekspres kodun doğru olduğunu düşünüyorum.

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"); 

}); 

Nesneyi hata ayıklamak için doğru yönde herhangi bir işaretçi büyük takdir edilecektir.

+0

Eğer ('p' + parametreleri) Ne 'console.log' baskılar gösterebilir misiniz? Ayrıca [nesne nesnesi] 'nin ne döndüğünü de ayrıntılandırabilir misiniz? –

+0

'parameters' değişkeni '[object Object]' döndürüyor. Yani 'console.log ('p' + parameters)', hatayı görüyorum. –

+0

'console.log'u deneyin ('p:', parameters)' Artı işareti yerine virgül dikkat edin. –

cevap

1

var parameters = { search: $('#search').val() }; ile var parameters = { search: $(this.target).val() }; değiştirmeyi deneyin. setTimeout() içinde bulunan this değişkeni, on() içinde this'dan farklı bir nesneyi ifade eder.

'u { search: linkURL } ile değiştirmek yerine, $('#search').val() sonucunu linkURL içine kaydedebilirsiniz.

da() işlevi jQuery API bkz yerine this.target yazma "olduğu gibi" http://api.jquery.com/on/

örnek this işaretçisini kullanın. Örneğin sizin durumunuzda $(this.target).val() yerine $(this).val() yazabilirsiniz. Satırı var linkURL = $('#search').val(); satırını setTimeout satırına taşıyın ve var linkURL = $(this).val(); olarak değiştirin. Ardından { search: $(this.target).val() }'u { search: linkURL } ile değiştirin.

(this.target bir olay nesneden hedef elemanı elde etmek yoludur ama burada biz bir tane yok.)