我在使用laravel 5中的vue js在我的ajax调用中返回数据时遇到问题。我有一个状态数组并在循环内调用ajax函数。现在的问题是,似乎ajax无法返回值。这是我的代码:
ready: function() {
var dData = {};
for (var i=0; i<this.pState.selectedState.length; i++){
dData = this.displayCounty(this.pState.selectedState[i])
}
console.log(dData);
},
methods:{
displayCounty: function(val){
var nData = {};
// ajax get County list
this.$http.get('/api/counties/' + val )
.success(function(counties){
return counties;
})
.error(function(){
}) //ajaxcall
}// displaCounty
}
任何想法的人?
答案 0 :(得分:4)
如果您只想将返回的结果分配给变量,请尝试以下方法:
ready: function() {
this.getCounties;
},
data: {
counties: []
},
methods:{
getCounties: function(val){
// ajax get County list
this.$http.get('/api/counties/' + val )
.success(function(counties){
this.counties = counties;
})
.error(function(){
}); //ajaxcall
} // displayCounty
}
答案 1 :(得分:3)
我认为你误解了$http.get
的异步性质。您拥有return counties
的回报不会影响displayCounty
的返回值。 displayCounty
立即返回null
,return counties
稍后无效。
在这种情况下使用的一个好策略是在视图模型上设置success
回调集counties
。然后,您可以在counties
上设置观察程序,并在数据发生变化时处理数据。
答案 2 :(得分:0)
Ready已被Vounted.js 2中的Mounted取代。
你应该用这个:
ready: mounted() {
this.getCounties;
},