【问题标题】:req.body.tweet returns value and undefiendreq.body.tweet 返回值和未定义
【发布时间】:2019-05-17 17:20:00
【问题描述】:

我正在使用 app.post,当我想向 tweeter 发布推​​文时。 但是,当我使用 req.body.tweetMessage 时,我得到了推文值和“undifiend”。我只想要推文价值,而且我不断得到 body.tweetMessage:"推文的价值" body.tweetMessage:未定义 这是为什么?我该如何解决?

app.js

let express = require("express");
let bodyParser= require ("body-parser");
let app = express();
let path = require("path");

let Twitter = require('twitter');
let config = require('./config.js');
let twitter = new Twitter(config);
let username = "NaouriRavid";


app.use(bodyParser.urlencoded({extended:false}));

app.use(bodyParser.json());


app.get('/',function(req,res){
res.sendfile("client.html");
});


app.get('/logo.png',function(req,res){
res.sendfile("logo.png");
});

// Post a tweet
app.post("/", function (req, res) {
if(req.body) {
    let tweet = (req.body.tweetMessage); // Get the user's tweets value from client
    **console.log("body.tweetMessage:"+req.body.tweetMessage);**
    let params = {
        status: tweet
    }
    twitter.post('statuses/update', params, function(err, data, res) {
        if(!err){
            let username = data.user.screen_name;
            let tweetId = data.id_str;
            console.log('your tweet have been posted! you can find it here:', `https://twitter.com/${username}/status/${tweetId}`);
        } else {
            console.log(err);
        }
    })
    res.status(200).send("your tweet have been posted! you can find it here:" +" "+`https://twitter.com/${username}`);
}
else {
    res.status(404).send({error: "There was a problem posting the tweet"})
}
});


app.listen(8081 ,function(){
console.log("Live at Port " + 8081);
});

client.html

<script>
document.getElementById("tweet").addEventListener("click", function()
{
    let tweet = document.getElementById("tweetMessage").value;
    let json = JSON.stringify({"tweetMessage": tweet});
    var xhr = new XMLHttpRequest();
    var url = 'http://localhost:8081';
    if (tweet === '') {
        alert("You must write something!");
        return;
    }
    else {
        xhr.open("POST", url, true); // true = asynchronous
        xhr.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
        xhr.send(json);
    }
});

</script>

【问题讨论】:

    标签: javascript node.js express twitter


    【解决方案1】:

    尝试使用表单数据

    <script>
    document.getElementById("tweet").addEventListener("click", function()
    {
        let tweet = document.getElementById("tweetMessage").value;
        var formData = new FormData();
        formData.append('tweetMessage',tweet);
    
        var xhr = new XMLHttpRequest();
        var url = 'http://localhost:8081';
        if (tweet === '') {
            alert("You must write something!");
            return;
        }
        else {
            xhr.open("POST", url, true); // true = asynchronous
            xhr.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
            xhr.send(formData);
        }
    });
    
    </script>
    

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多