繁体   English   中英

如何在vue.js中使用axios从数组多请求发布?

[英]How to post from array mutiple request with axios in vuejs?

我尝试使用axios从数组发布到api php文件,并一一获得响应,而不仅仅是一个请求。 我阅读了有关axios.all()的内容,但无法弄清楚我是javascript新手。

<div id="app">
    <center>
<div id="area">
   <textarea v-model="sent" name="sent" id="sent" cols="30" rows="10" class="form-control">
   </textarea>
    <br>
    <button v-on:click="insert" class="btn btn-default">Send</button>
</div>

<div id="good" v-for="message of messages">
    <span><h2>Good</h2></span>

        {{ message }}

</div>

</center>
</div>

这是vuejs代码。

<script>
     new Vue({
 el:'#app',
 data:{
     sent:[],
     messages:[]
 },
         methods:{
           insert:function (){
               const vm = this;
               splitz.forEach(function(entry){
               axios.post('/one.php', {
                   sent: vm.entry
               }).then(response => {
                   vm.messages.push(response.data.onefinal) ;
                       console.log(response.data);
                   }
               ).catch(function(error){ console.log(error); });
               }
            }
         },
         computed:{
             splitz: function () {
                 return this.sent.split('\n')
             }
         }
    });
</script>

您可以这样操作:

// Create an array of post requests from splitz array
var requests = splitz.map(entry => axios.post('/one.php', { sent: this.entry }))

// Send all requests using axios.all
axios.all(requests)
.then(results => results.map(response => response.data.onefinal))
.then(newMessages => {
    console.log('New Messages:', newMessages)
    this.messages.push.apply(this.messages, newMessages)
})

编辑:一次发送请求:

insert: function() {

    var vm = this;

    function sendRequest(arr, i) {
        var entry = arr[i];
        axios.post('/one.php', { sent: entry }).then(function (response) {
            vm.messages.push(response.data.onefinal);
            if (i < arr.length - 1) {
                sendRequest(arr, ++i);
            }
        })
            .catch(function (error) {
                console.log(error);
            });
    }

    sendRequest(this.splitz, 0);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM