从 ajax 捕获数据并对其进行操作的最佳方式
Best way to capture data from ajax and manipulate with it
我正在制作一个应该使用 ajax 从数据库中获取图像,然后使用一些轮播插件显示它。这是它应该如何工作:
- 图像网址从管理员保存到数据库
- 前端脚本对 PHP 文件进行 ajax 调用,并从数据库返回所有 URL。
- 现在,当我拥有所有图像时,可以应用轮播插件。
- 现在正在逐个显示图像。
诀窍是我想在显示最后一个图像时进行另一个 ajax 调用,并使用数据库中的新图像重新填充容器div。这是我的代码
function get_images(){
var data = {
"function_name" : "get_images",
"args" : ""
};
$.ajax({
type : "POST",
url : "http://localhost/.../functions.php",
data : data,
dataType : "JSON",
success : function(ret){
$(".container").html(ret);
$(".container").carousel(//When last call - function again);
}
});
}
这就是问题所在。在 ajax 成功时,轮播插件开始旋转 imgs,完成后,应再次调用get_images函数。但是这个函数已经在另一个函数中了,每次调用时,它都会更深一层。有什么办法可以做到这一点吗?
最好是轮播触发一个需要更多图像的事件并收听该事件。然后,您可以检索更多图片并将新列表返回到轮播。有一些轮播插件内置了所有这些。我经常使用这个:http://caroufredsel.dev7studios.com/<</p>
也许在你的PHP脚本中:
<?php
if ( isset($_POST['function_name']) ) {
if ( $_POST['function_name'] == 'get_images' ) {
// Get some URLs into an array...
// For the sake of the example we'll manually fill the array
$urls = ['img/image1.png', 'img/image2.png'];
echo json_encode($urls);
}
}
在您的 JS 中:
function Carousel() {
this.getMoreImages();
}
Carousel.prototype.nextImage = function () {
if (this.i < this.images.length) {
this.showImage(); // Implement this.
this.i += 1;
this.spin():
}
else {
this.getMoreImages();
}
}
Carousel.prototype.spin = function () {
var self = this;
setTimeout(function () {
self.nextImage();
}, 5000);
}
Carousel.prototype.getMoreImages = function () {
var self = this;
$.ajax({
type : 'POST',
url : 'http://localhost/.../functions.php',
data : data,
dataType : 'JSON',
success : function (ret) {
self.images = JSON.parse(ret);
self.i = 0;
self.spin();
}
});
}
var myCarousel = new Carousel();
此轮播对象将在实例化时请求图像数组,并以 5 秒的间隔显示每个图像。当所有映像都用尽时,它将自动进行另一个 AJAX 调用,以与原始相同的方式检索图像,然后继续循环遍历新映像。它将永远在这个循环中继续下去。
相关文章:
- 使用Javascript/jQuery以编程方式将当前锚点/哈希/片段附加到任何表单操作url
- 以非ajax方式将js对象传递给mvc操作
- Javascript数学不起作用,更好的方式来执行操作
- 在 html 页面上,javascript 是以编程方式操作 DOM 的唯一方法吗?
- 在 Node JS 中获取、操作和编写(响应)巨大 JSON 的最佳方式
- 在以编程方式更改为输入值时触发操作
- 从 ajax 捕获数据并对其进行操作的最佳方式
- 如何以编程方式触发操作
- 单击一行时重定向到操作的正确方式(onclick)Yii2
- React/Flux通过登录流处理权限敏感操作的方式
- Node.js:执行多个异步操作的最佳方式,然后执行其他操作
- 如何根据会话变量以程序方式更改表单操作
- Angular控制器中的操作顺序没有以正确的方式工作
- MVC3控制器操作以编程方式返回一个失败的发布请求
- 在d3/Canvas JS中操作数据的最佳方式
- 如何以静默方式保证ASP的执行.. NET MVC3操作页面卸载
- 用Angular的方式创建自定义浏览器返回操作
- 为什么在+=操作中使用串联的变量会根据它的定义方式产生不同的结果?
- 如何以jQuery的方式搜索和操作复杂的JavaScript对象
- 网页小部件 - 安全性和操作方式