React'te POST İsteği ile ilgili sorun
Aug 16 2020
Günlüğü görebildiğim için düğme tıklaması çalışıyor ancak POST isteği gerçekleşmiyor. Basit bir giriş kutusu yaptım ve buton tıklandığında sunucuya bir POST isteği göndermesi gerekiyor.
POST isteğinin neden asla gerçekleşmediğini anlayamıyorum, bu yüzden lütfen çözmeme yardım edin.
Comment.js:
import React from 'react';
export class Comment extends React.Component {
constructor(props){
super(props);
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
//SEND POST request
console.log('handling click');
const xhr = new XMLHttpRequest();
const URL = "http://localhost:8080/api/comments"
xhr.onreadystatechange = () => {
if(xhr.readyState === XMLHttpRequest.DONE){
console.log('POST request sent, comment posted.')
}
xhr.open('POST',URL);
xhr.setRequestHeader('Content-type', 'text/plain');
xhr.send(document.getElementById('comment-box').value);
}
}
render(){
const comment_form = (
<div className="posts">
<input type="text" id="comment-box" name="comment" placeholder="Say something nice." />
<button className="submit-button" type="button" onClick={this.handleClick}> Comment </button>
</div>
);
return comment_form;
}
}
Yanıtlar
3 Asutosh Aug 16 2020 at 03:40
OnReadyState'in kapanması} gibi bir sözdizimi hatası yaşadınız, hattathandler doğru yerde değildi
import React from "react";
import "./styles.css";
export class Comment extends React.Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
//SEND POST request
console.log("handling click");
const xhr = new XMLHttpRequest();
const URL = "http://localhost:8080/api/comments";
xhr.onreadystatechange = () => {
if (xhr.readyState === XMLHttpRequest.DONE) {
console.log("POST request sent, comment posted.");
}
};
xhr.open("POST", URL);
xhr.setRequestHeader("Content-type", "text/plain");
console.log(document.getElementById("comment-box").value);
xhr.send(document.getElementById("comment-box").value);
}
render() {
const comment_form = ( <
div className = "posts" >
<
input type = "text"
id = "comment-box"
name = "comment"
placeholder = "Say something nice." /
>
<
button className = "submit-button"
type = "button"
onClick = {
this.handleClick
} >
{
" "
}
Comment {
" "
} <
/button> <
/div>
);
return comment_form;
}
}
1 StarkJeon Aug 16 2020 at 03:32
Cevap
Ok işlevi bağlama this
ve onreadystatechange geri araması ne zaman çağrılır this === Comment
. Yani xhr.onreadystatechange çalışmıyor.
xhr.onreadystatechange = function() {
if(xhr.readyState === XMLHttpRequest.DONE){
console.log('POST request sent, comment posted.')
}
Aşağıdaki referansın size yardımcı olacağını düşünüyorum. React'ten değil, ok fonksiyonundan sorun değil.
Bu referans, bu sorun hakkında daha net bir şekilde yazılır.
Referans
- Javascript eski sözdiziminden ok işlevine dönüştürme
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'