【问题标题】:Vue error: In strict mode code, functions can only be declared at top level or inside a blockVue错误:在严格模式代码中,函数只能在顶层或块内声明
【发布时间】:2019-07-31 08:55:21
【问题描述】:

我正在运行一个带有文本框和提交按钮的 Vue 脚本,我正在调用一个 api 来将我在文本框中写的内容发布到 api 并从 API 返回信息,我在标题中提到了这个错误,尽管我已经在 vue 中编写了 Javascript 函数,因为它应该是?

使用该脚本,我首先设置了一个新的 XMLHttpRequest,为 GET 和 POST 方法启动标头和 api 键。然后我创建了 2 个函数来从文本框中获取数据并将它们发送到 API,然后使用另一个函数创建另一个按钮来发送回数据。

我采用了这种方法,因为我不断遇到 CORS 问题,并且 API 需要我声明访问控制源头,我对这段代码做错了什么吗?任何帮助将不胜感激

<script>
export default {
    name: 'ProperForm'
}
    methods: {
        StartClient: function () {
            this.get = function(Url, Callback){
            var aHttpRequest = new XMLHttpRequest();
            aHttpRequest.onreadystatechange = function() {
                if (aHttpRequest.readyState == 4 && aHttpRequest.status == 200)
                Callback(aHttpRequest.responseText);
            }

            aHttpRequest.open("GET", Url, true);
            aHttpRequest.setRequestHeader("X-Api-Key", "eVnbxBPfn01kuoJIdfgi46TiYNv8AIip1r3WbjsX");
            aHttpRequest.send(null);
        }
        this.post = function(Url, message, Callback) {
            var aHttpRequest = new XMLHttpRequest();
            aHttpRequest.onreadystatechange = function() {
                if (aHttpRequest.readyState == 4 && aHttpRequest.status == 200)
                Callback(aHttpRequest.responseText);
            }

            aHttpRequest.open("POST", Url, true);
            aHttpRequest.setRequestHeader("x-api-key", "eVnbxBPfn01kuoJIdfgi46TiYNv8AIip1r3WbjsX");
            aHttpRequest.send(message);
            }
        }
    var client = new StartClient();

    submitData: function () {
        document.getElementById('inputBox').disabled = true;
        var targetInputButton = document.getElementById("inputBox").value;
        var message = '{"targetInputButton":"' + targetInputButton + '"}';
        client.post('https://le75bkfcmg.execute-api.eu-west-2.amazonaws.com/dev/start-trace', message, function(response) {
        document.getElementById('jobId').innerHTML = response;
    });
    }

    sendBackData: function () {
        var jobId = document.getElementById("jobId").innerHTML;
        var message = '{"jobId":"' + jobId + '"}';
        client.post('https://le75bkfcmg.execute-api.eu-west-2.amazonaws.com/dev/check-trace', message, function(response) {
        document.getElementById('report').innerHTML = response;
    });
    }
}

</script>

我编写 var client 的新方法:

StartClient: function () {
    var client 
},

【问题讨论】:

  • 您的methods 似乎不在组件定义中。前一行的} 应该移到最后。
  • 谢谢,但现在它说“客户”没有定义。我重写了论坛中的 var 客户端功能,但仍然无法正常工作。我在这里也做错了吗?
  • @TaranBasi 如果这解决了问题,请不要通过在 cmets 中提出一连串连续的问题来将这个问题变成变色龙。

标签: javascript html vue.js xmlhttprequest


【解决方案1】:

您需要将您的方法对象放在导出中并将方法拆分为逗号

<script>
export default {
    name: 'name',
    methods:{
        foo(){
        },
        bar(){
        }
    }
}

更新:var client = new StartClient(); 在方法之外定义

【讨论】:

  • 它现在在出口内部,正如裙子提到的那样,但现在我收到“未定义客户端”错误。有解决办法吗?
  • 我现在添加了 'var client = new StartClient();'但它导致 vue 站点呈现空白页面,并出现错误“未定义 StartClient”
猜你喜欢
  • 2016-01-26
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 2022-08-14
  • 2017-07-03
  • 2019-06-13
相关资源
最近更新 更多