php - ajax调用后VueJS更新数据
问题描述
我试图在我的网页上进行分页。所以它会在每一页被翻转时相应地过滤数据。每次成功的 ajax 调用后如何更新我的 Vue 实例的数据?每次发出 ajax 请求时都会回传正确的数据,但 Vue 数据没有更新。
代码product.php
(如下):
<script src="/vue.min.js"></script>
<script src="/i.js"></script>
<div class="content">
<table class="hue">
<thead>
//table headings
</thead>
<tbody>
<tr v-for="(value, key) in result">
<td>{{value.productCode}}</td>
<td>{{value.productName}}</td>
//... etc
</tr>
</tbody>
</table>
</div>
代码i.js
(如下):
function fetchData(p=null){
var ajaxVue = new Vue({
el: ".hue > tbody",
data: {
result: []
},
mounted: function(){
var self = this;
$.ajax({
url:"/a.php",
method:"GET",
data:{
page: p
},
dataType:"json",
success:function(rs){
console.log(rs.pd[14].code);
self.result = rs.pd;
$('#pagination > .pagination').html(rs.pgnt);
//ajaxVue.$forceUpdate();
},
error:function(err){console.log(err);}
});
}
});
}
$(document).ready(function(){
fetchData();
});
注意:console.log()
在ajax中成功的功能是显示数据是否在变化,是否获取到正确的数据。
例子:
//there will be 15 data on each request, i just show one for example.
BM23901 //current page: 1
BM19023 //current page: 2
BM39020 //current page: 3
但是在我的product.php
界面上,显示的数据BM23901
在每次成功的 ajax 请求发出后仍然存在而不是更新自身。
我从 Vue 尝试过forceUpdate()
,但实例仍未更新。
解决方案
我认为您应该改用 axios :
try {
const response = await axios({...});
console.log(rs.pd[14].code);
self.result = rs.pd;
} catch (error) {
console.log(error);
}
我认为这段代码会完美运行。但是如果你仍然想用 ajax 来尝试,那么我可能会建议将你的成功函数更改为箭头函数:
$.ajax({
...
success: (resp) => {
result = resp.pd;
},
...
});
请注意,我不必使用self
内部箭头功能
推荐阅读
- mongodb - Mongodb教程不排序字段{h}
- python - 条件测试无法在 pythonanywhere 和 python 和烧瓶中使用
- python-3.x - 将“null”计数为整数
- assembly - 汇编编程例行题
- database - 如何授予 Redshift 中所有模式的使用权限?
- html - CSS中的悬停半径问题
- .net - 为什么我的应用会突然开始需要 .resources 文件?
- c# - 无法将类型“UnityEngine.Vector3”隐式转换为“bool”
- java - Eclipse / Tomcat / Maven - 重命名 context.xml
- php - 无法使用 Guzzle 基本身份验证呼叫端点