2016-07-06 6 views
2

Ich habe einen UDP-Server, der jedes Mal, wenn eine Nachricht an ihn gesendet wird, verschiedene Nachrichten zurücksendet. Wenn ich die Nachricht in die var Nachricht hart code, dann funktioniert alles. Aber ich möchte, dass der Client eine Nachricht manuell eingeben kann, und dann, wenn die Aktualisierungsschaltfläche gedrückt wird, sendet der Ajax die gleiche eingegebene Nachricht erneut. Im Moment passiert nichts, wenn die Taste gedrückt wird, weil Ajax nicht weiß, was req.body.number ist.Wie Daten an Post-Methode von Knoten js mit AJAX/jQuery senden?

Antwort

0

Sie können jQuery $.post() Methode verwenden, um ein JSON-Objekt zu schicken, oder können Sie kodieren Parameter url:

JSON:

$.post('/output2', {number: 'value1'}, function(data){ 
    // Do things 
}); 

URL:

$.post('/output2?number=value1', function(data){ 
    // Do things 
}); 

Um diese Parameter zu erhalten auf Ihre Post-Route können Sie die Variable req.body verwenden:

app.post('/output2', function(req, res){ 
    var number = req.body.number; 
    // Do things 
}); 

Die Art, wie Sie Ihr Formular eingerichtet haben, brauchen Sie nicht wirklich jQuery Post-Methode, um dies zu tun. Wenn Sie jedoch eine vollständige jQuery-Übermittlung wünschen, fügen Sie diese zu Ihrer index2.html hinzu.

<script> 

$(function(){ 
    $(document).on('submit', 'form', function(e){ 
     e.preventDefault(); 
     var formdata = { number: $('input[name="number"]').val() }; 
     $.post('/output2', formdata, function(data){ 
      alert(data); 
     }); 
    }); 
}); 

</script> 
+0

funktionierts wenn req.body.number in meinem Code herkommt andere HTML-Datei? – Baner

+0

Ich bin mir nicht sicher, ob ich das verstehe, können Sie das näher ausführen? – wrxsti

+0

Wenn Sie sich den obigen Code ansehen, ist mein app.get, wo der Client die Nachricht eingibt, die index2.html ist. Dies ist, wo ich req.body.number von bekommen. Kann ich die gleiche req.body.number in meinem Ajax Call bekommen? Tut mir leid, wenn das verwirrend ist. Lassen Sie mich wissen, wenn dies etwas aufhebt – Baner

0

ein wenig Code aus wrxsti verändert, brauchen wir keine var Formulardaten zu lassen, verwenden Sie einfach:

$("#submit").on("submit",function (e) { 
     e.preventDefault(); 
     $.post("http://localhost:5000/post/comment",$(this).serialize(), function(data) { 
      console.log(data); 
     }); 
});