Ich spiele gerade mit einem Twitter-API-Wrapper für Node und versuche herauszufinden, wie ein Abfrageparameter von einem HTML-Formular an einen AJAX-get übergeben wird Anfrage und habe diesen Parameter dann in meine Express-Route übergeben, anstatt nur die Formularaktion direkt auf die Route zu gehen.Übergabe eines Abfrageparameters von einem AJAX-Anruf an eine Expressroute
Hier ist mein HTML-Code
<form id="searchTerm">
Keyword:<input id="keyword" type="text" name="q" placeholder="Keyword">
<input type="submit">
</form>
Mein clientseitige Javascript
$(document).ready(function() {
$('#searchTerm').on('submit', function() {
$.ajax({
type: 'GET',
data: q,
url: '/search/tweets/term',
success: function(data) {
console.log(data);
},
error: function(error) {
console.log(error);
}
});
});
});
Und dann Route meine Node.JS:
// Search by keywords or phrases
app.get('/search/tweets/term', function(req, res) {
var q = req.query.q;
// Accesses the Twitter API and pulls back the respective tweets
client.get('search/tweets', {q: q, count: 100, lang: 'en', exclude: 'retweets'}, function(error, tweets, response) {
if(!error) {
res.send(tweets);
} else {
console.log(error);
res.status(500).send(error.stack);
}
});
});
Ich erhalte eine „Abfrage fehlt Parameter "Fehlermeldung in meinem Terminal, wenn ich jedoch einen Wert in das Formular eingab. Ich bin mir nicht sicher, was ich falsch mache.
UPDATE
Verstanden über folgende Arbeiten:
$(document).ready(function() {
$('#searchTerm').on('submit', function(e) {
e.preventDefault();
var q = $('#keyword').val();
$.ajax({
type: 'GET',
data: {q: q},
url: '/search/tweets/term',
success: function(data) {
console.log(data);
}
})
})
})
Da aber ich bin Umsetzung e.preventDefault(), ich bin die Abfrageparameter in meiner URL zu verlieren. Da ich Benutzern die Möglichkeit geben möchte, URLs mit bestimmten Schlüsselwörtern zu teilen, gibt es eine Möglichkeit, diese Parameter in der URL intakt zu halten, während die JSON-gesendete Client-Seite immer noch empfangen wird? Oder muss man einfach den JSON auf der Serverseite manipulieren und die Daten über eine Template Engine einspielen lassen?
'Daten: q,' woher definieren Sie 'q'? –
Daten: "q" Quoten? – Icewine
Verhindern Sie das Senden des Formulars. Weil, wenn Sie nicht Ihr Ajax holt das Ergebnis, aber die Webseite hat auf die nächste Seite navigiert ... – deostroll