2016-07-21 28 views

Antwort

0

ein Beispiel: https://jsfiddle.net/69z2wepo/9888/

$.ajax({ 
    type: 'POST', 
    url: '/some/url', 
    data: data 
    }) 
    .done(function(result) { 
    this.clearForm(); 
    this.setState({result:result}); 
    }.bind(this) 
    .fail(function(jqXhr) { 
    console.log('failed to register'); 
    }); 

Es verwendete jquery.ajax Methode, aber man kann es leicht mit AJAX-basierten Libs wie axios, Superagent oder holen ersetzen.

+0

Vielen Dank für das Beispiel :). Ich wollte auch verstehen, ob mein Dienst JSON-Formatdaten erwartet. Welche Änderungen wären dann erforderlich?Jede Art von Information wäre wirklich hilfreich. Wenn ich also den curl-Befehl verwende, um den Endpunkt zu treffen, ist es wie curl -v -X POST http: // localhost: 8080/myapi/ui/start -d '{"Id": "112", "Benutzer": " xyz "} ' so wie kann ich einen solchen Dienst anrufen. – Divya

+0

erstellen Sie eine Variable namens Daten mit ''{" Id ":" 112 "," User ":" xyz "}'' und ändern Sie die URL zu localhost: 8080/myapi/ui/start, das ist es, einmal das XHR Wenn der Aufruf erfolgreich ist, landen Sie in der Methode done und Sie haben über die Eigenschaft result Zugriff auf Ihre Daten. –

59

direkt aus dem Reagieren docs:

fetch('https://mywebsite.com/endpoint/', { 
    method: 'POST', 
    headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json', 
    }, 
    body: JSON.stringify({ 
    firstParam: 'yourValue', 
    secondParam: 'yourOtherValue', 
    }) 
}) 

(Dies ist JSON Posting, aber man könnte auch tun, zum Beispiel, mehrt-Form.)

+0

Danke für das Beispiel :) aber jetzt bekomme ich einen weiteren Fehler 'cant find variable fetch'.Auch bin ich total neu in React JS, also bin ich mir nicht sicher, ob das der richtige Weg ist, es zu tun var APP = React.createClass ({ \t render() { \t return (\t fetch ('http: // localhost: 8080/api/ui/Start', { Methode: 'Post', Körper: JSON.stringify ({ Id : '112', Benutzer: 'xyz' }) }) \t); \t }}); – Divya

+2

Sie müssen es [installieren und importieren] (https://github.com/github/fetch). Vergessen Sie nicht, dass die 'fetch()' Funktion das _data_ nicht zurückgibt, sondern nur ein [Versprechen] (https://www.promisejs.org/) zurückgibt. – Malvolio

+1

haha ​​@Divya, ich wollte gerade den gleichen Kommentar machen, bevor ich deinen gelesen habe. Nicht sicher, ob es in React.createClass eingefügt werden soll oder nicht. Könnten wir bitte auch einen Link zu den reaktiven Dokumenten haben? Ich habe versucht, ihre Website (https://facebook.github.io/react/docs/hello-world.html) erfolglos zu durchsuchen. –

7

reagieren nicht wirklich eine Meinung über wie Sie REST-Anrufe tätigen. Grundsätzlich können Sie für diese Aufgabe eine beliebige AJAX-Bibliothek auswählen.

Der einfachste Weg, mit plain old JavaScript ist wahrscheinlich so etwas wie folgen aus:

var request = new XMLHttpRequest(); 
request.open('POST', '/my/url', true); 
request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
request.send(data); 

In modernen Browsern auch fetch verwenden kannst.

Wenn Sie mehr Komponenten haben, die REST-Aufrufe ausführen, kann es sinnvoll sein, diese Art von Logik in eine Klasse zu integrieren, die für alle Komponenten verwendet werden kann. Z.B. RESTClient.post(…)

0

Here ist die Liste von Ajax-Vergleichsbibliotheken basierend auf den Funktionen und Unterstützung. Ich bevorzuge fetch für nur Client-Seite Entwicklung oder isomorphic-fetch für die Verwendung in Client-Seite und Server-Seite Entwicklung.

Weitere Informationen über isomorphic-fetch vs fetch

10

können Sie Superagent installieren

npm install superagent --save 

dann für Make Post Aufruf Server

import request from "../../node_modules/superagent/superagent"; 

request 
.post('http://localhost/userLogin') 
.set('Content-Type', 'application/x-www-form-urlencoded') 
.send({ username: "username", password: "password" }) 
.end(function(err, res){ 
console.log(res.text); 
}); 
1

Weitere kürzlich beliebte Pakete ist: axios

installieren : npm install axios --save

Einfache Versprechen basierte Anfragen


axios.post('/user', { 
    firstName: 'Fred', 
    lastName: 'Flintstone' 
    }) 
    .then(function (response) { 
    console.log(response); 
    }) 
    .catch(function (error) { 
    console.log(error); 
    }); 
1

Ab 2018 und darüber hinaus haben Sie eine modernere Option, die async/await in Ihrer ReactJS Anwendung zu integrieren ist. Eine Versprechen-basierte HTTP-Client-Bibliothek wie Axios kann verwendet werden. Der Beispielcode ist unten angegeben:

import axios from 'axios'; 
... 
class Login extends Component { 
    constructor(props, context) { 
     super(props, context); 
     this.onLogin = this.onLogin.bind(this); 
     ... 
    } 
    async onLogin() { 
     const { email, password } = this.state; 
     try { 
      const response = await axios.post('/login', { email, password }); 
      console.log(response); 
     } catch (err) { 
      ... 
     } 
    } 
    ... 
}