Ich möchte eine Anfrage über Ajax-Kommunikation mit jQuery-Code stellen, die Verarbeitung in Rails durchführen und sie in einer Antwort im JSON-Format zurückgeben. Insbesondere: "Wenn Sie auf die Schaltfläche klicken, wird eine Anforderung ausgelöst, die festgelegten Daten werden an Rails gesendet, die Antwort wird vom Client empfangen und die Warnung und die auf der Konsole gesendeten Daten werden angezeigt." Ich würde es gerne probieren.
Dieses Mal möchte ich, um die Client- und die Serverseite verständlicher zu machen, ohne Erb verarbeiten. Daher lautet die Erweiterung der diesmal verwendeten Datei wie folgt.
-Code, der die Funktion liest, die jQuery vom jQuery-Server aktiviert (Einführung der sogenannten jQuery)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
・ Code zum Lesen von JavaScript-Dateien
<script src="sample.js"></script>
・ Schaltfläche zum Anfordern an den Server
<input type="button" id="btn1" value="Taste">
Der Quellcode von HTML, der diese kombiniert, lautet wie folgt.
sample.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Ajax üben</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="sample.js"></script>
</head>
<body>
<input type="button" id="btn1" value="Taste">
</body>
</html>
Ich werde dieses Mal $ .ajax verwenden, da die folgenden Unterschiede bestehen.
$.ajax | Sie können die Verarbeitung schreiben, wenn die Kommunikation erfolgreich ist oder fehlschlägt |
---|---|
$.post | Nur die Verarbeitung bei erfolgreicher Kommunikation kann geschrieben werden |
url: "/test"
-Stellen Sie die Art der HTTP-Kommunikation ein Es gibt GET und POST, aber dieses Mal senden wir die Daten per POST.
type: "POST"
dataType: "json"
・ Inhalt der an den Server gesendeten Daten
data: { user: { name: "foo", age: 25 } }
・ Erfolgreiche Verarbeitung
done(function(human){
alert(JSON.stringify(human));
});
・ Verarbeitung zum Zeitpunkt des Ausfalls (optional)
fail(function(human){
console.log(human.responseText);
});
・ Verarbeitung, die unabhängig von Erfolg oder Misserfolg durchgeführt wird
always(function(){
console.log(human);
});
sample.js
$(function(){
$('#btn1').click(function(){
$.ajax({
url: "/test",
type: "POST",
dataType: "json",
data: { user: { name: "foo", age: 25 } }
})
.done((human) => {
alert(JSON.stringify(human))
})
.fail((human) => {
console.log(human.responseText)
})
.always((human) => {
console.log(human)
});
});
});
· Routing Legen Sie das in der js-Datei beschriebene Anforderungsziel (/ test) fest.
route.rb
Rails.application.routes.draw do
get "/test", to: 'statics#test'
post "/test", to: 'statics#test'
end
·Regler
statics_controller.rb
class StaticsController < ApplicationController
def test
human = params[:user]
render :json => human
end
end
Hoffentlich sieht das Display wie folgt aus.
Wie war es? Ich denke, dass asynchrone Kommunikation eine leichte Kommunikation ermöglicht und ein Schritt in Richtung einer App ist, die einer großen Anzahl von Menschen bekannt ist.
Es ist jedoch in der Regel ein komplizierter Mechanismus für Anfänger, daher hoffe ich, dass Sie sich darauf beziehen können.