【问题标题】:Vue2: JSON object using emit not working?Vue2:使用发射的 JSON 对象不起作用?
【发布时间】:2018-02-14 05:45:15
【问题描述】:

我正在尝试将 JSON 对象从子组件传递给父组件,但有些东西没有按我的预期工作:

当我尝试阅读父 javascript 函数的适当性时,它返回给我[Object object]

我不知道如何读取整个 JSON,考虑到子组件中的 JSON 符合我的预期。

这里是我的子组件函数(在 METHODS 内):

sendAllSteps : function(uscita){
//"uscita" is the json object
    this.$emit('mandapreventivo',{uscita});
return;     
},

在 index.html 中

                <lista-percorso :selezionati="il_tuo_percorso"
                            v-on:removeall="pathlengthTozero()"
                            v-on:vediservizi="mostraPercorso2"
                            v-on:rimuoviprezzo="priceremove($event)"
                            v-on:rimuoviprezzoparent="priceparentremove($event)"
                            v-on:mandapreventivo="postaTutto($event)"
                            ></lista-percorso>

在 main.js 中

postaTutto : function({uscita}){
    console.log("dati uscita "+ `${uscita}`);
    console.log(this.modello.lineaGialla);
    console.log(JSON.stringify(`${uscita}`));

    var exit = `${uscita}`;
    alert(exit);
    alert(exit[0].length);
    alert(JSON.stringify(`${uscita}`));
    var exit2 = exit.toString(`${uscita}`);
    alert(exit2);
//this return to me [object Object]

    this.isLoading=true;
    var config = {dataType: "jsonp"};

    axios.post(
            'url.something',
            //invia,
            {'serviziSelezionati':`${uscita}`},
            config          
        )
      .then(function (response) {
        this.isLoading=false;
        var risposta = JSON.stringify(response.data);
        console.log(risposta);
        alert("grazie per aver compilato il form!");
        return;
      })
      .catch(function (error) {
        this.isLoading=false;
        console.log(error);
        alert("qualcosa è andato storto");
        return;
      });

},

现在,我真的不知道如何查看 ${uscita} 对象,当我发布数据时,有一个 PHP 编译器解释 JSON 并分配看起来只是空白的值

有人已经遇到过这个问题吗? 提前谢谢你。

【问题讨论】:

    标签: javascript json vuejs2 vue-component


    【解决方案1】:

    问题就在这里。

    var exit = `${uscita}`;
    

    此代码采用uscita 对象并基本上在其上执行toString(),从而产生“[object Object]”。

    这一行:

    var exit2 = exit.toString(`${uscita}`);
    

    对任何事情都没有。 exit 已经是一个字符串,toString() 不接受任何参数。结果与exit, "[object Object]" 中的值相同。

    “[object Object]”是任何时候你对一个对象执行toString()的结果。

    我希望您想要提交uscita 对象,您应该可以这样做:

    axios.post("url.something", {'serviziSelezionati': uscita}, config)
    

    Axios 会根据需要将数据转换为 JSON。

    此外,您正在进行一些不必要的解构。只需传递uscita 对象:

    this.$emit('mandapreventivo', uscita)
    

    这意味着你的方法可以是

    postaTutto : function(uscita){...}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      相关资源
      最近更新 更多