[英]EmberJS users str.replace is not a function TypeError: str.replace is not a function
[英]TypeError: str.replace is not a function strange error with vue.js Ajax call
我收到一个奇怪的错误: vue-resource.common.js Uncaught TypeError: str.replace is not a function
,它似乎与我正在获取一些数据的ajax调用有关:
export default {
data: () => ({
recipes: []
}),
ready() {
this.$http.get('http://localhost:3000/recipes', {
headers: {
'Access-Control-Allow-Origin': true
}
}).then((recipes) => {
this.$set('recipes', recipes)
})
}
};
我是vue.js的新手,真的不确定如何调试它。任何指针都很棒。
非常感谢。
发生这种情况是因为Vue Resource中标头的值应该是string
类型,而不是boolean
。
我实际上在Vue资源文档中没有看到这一点,但是通过查看源代码可以很容易地看到:
Header的set
方法( 请参阅此处 )调用trim
函数:
set(name, value) {
this.map[normalizeName(getName(this.map, name) || name)] = [trim(value)];
}
trim
假定该值为字符串( 请参见此处 ):
export function trim(str) {
return str ? str.replace(/^\s*|\s*$/g, '') : '';
}
如问题评论中所述,您使用此标头的方式不正确。 Access-Control-Allow-Origin
标头是在Response而不是请求上使用的标头。 从技术上讲,这与错误无关,但是值得一提。
有关此标头和其他跨源请求问题的更多信息,您可以阅读CORS上的MDN文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.