欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

smarty模板和php之间数据传递问题

程序员文章站 2022-03-14 13:19:20
...
本人做了一个页面,用的smarty模板。数据都在index.php中读出来了,然后显示在index.tpl文件中。但是tpl文件有个按钮,是要把数据按规定排序的。例如,我默认的是index.php中从数据库中读出来顺序是1,2,3,4。那么tpl文件中有个按钮,点击之后页面显示的就是4,3,2,1。目前就是想知道,怎么把那个点击事件传送到index.php,然后index.php按规定读出数据之后,再显示到tpl文件中。
我在tpl文件中写了一个点击事件,想用ajax传递,抓包显示的,index.php也读出了数据,但是当前tpl文件显示的还是之前的。

$("#sortbypop").click(function(){
var url = document.URL;
$.get(url,{action:"get",sort:"popsort"},function(data,textStatus){
});
});
这是那段ajax代码。请问要该怎么做?

回复讨论(解决方案)

你的回调函数 function(data,textStatus){} 函数体是空的,当然就什么也不会做了
具体要做些什么事情,要取决于你设计的场景

原来是徐前辈!找到高手了。
是这样,因为我不需要执行什么,我想做的就是在index.tpl中提交一个参数,让后台php程序获取之后重新读取下数据库数据,然后再显示出来。流程相当于 tpl-->提交参数--->php获取重新读数据--->tpl中更新显示 就是这个功能。关键是我的数据是在index.php中读出来的,然后display(index.tpl)了。现在想做的就是,tpl往回传参数,php重新读,再重新传数据给tpl。我已经被绕晕了。。。。

你的回调函数 function(data,textStatus){} 函数体是空的,当然就什么也不会做了
具体要做些什么事情,要取决于你设计的场景

就是点击那个新品排序和点击排序之后,会显示不同数据

在 function( data,textStatus){} 中
data 显然是返回的数据,怎么展示这个数据,与你的设计有关。别人如何知道?

在 function( data,textStatus){} 中
data 显然是返回的数据,怎么展示这个数据,与你的设计有关。别人如何知道?
这个回调函数可以不用,我是用来测试的。我是说我那个思路要该怎么实现,其实就是一个很简单的问题,我估计绕进去了。说白点就是
php 读出了一行数据,然后显示到了模板中。现在模板有个按钮功能,要求php重新把数据排序,然后再显示到模板。具体流程就是前端页面 tpl-->php-->tpl这样。现在我做的测试。alert了下回调函数里的data,显示的是新数据html完整代码。就是说,回调函数返回的数据中,连php文件中的 display(tpl)文件也返回了。所以返回的是一整个html代码。但是当前的tpl页面没有变化。我想做的功能就是,点击下,然后中间显示的图片顺序变化了。不点击,就是默认的顺序。

那个回调函数是非用不可的,并且那个 data 只应该是需要变化的那个区域的内容
于是你用 data 替换掉目标区域的内容不就完事了?

那就是js操作了,用data 替换掉下面的内容就可以啦。

那个回调函数是非用不可的,并且那个 data 只应该是需要变化的那个区域的内容
于是你用 data 替换掉目标区域的内容不就完事了?
现在主要是data请求的是index.php。所以返回了index.php中所有数据,包括display(tpl)。现在data里数据是一整个html页面内容了。里面数据不好拿出来。想看看有没有更方便的办法

如果要用 ajax 来做局部刷新,那么你就得将模板拆开。即不同的需求用不同的模板
如果你要整体刷新,就不要用 ajax

如果要用 ajax 来做局部刷新,那么你就得将模板拆开。即不同的需求用不同的模板
如果你要整体刷新,就不要用 ajax
原来只是分开就可以了。我一直在追求整体刷新使用ajax,走错方向了,太偏执了我。多谢徐老师!