我是 symfony2 的基本用户。我正在尝试使用 Symfony2中的jquery执行过滤搜索结果功能:
1。在javascript部分的twig视图中,我从输入中获取数据并将ajax请求发送到控制器usung $.ajax()
2. 在控制器中我从数据库中获取数据。我做的最后一条指令return new jsonRespons(data)
3. 在最后一步中,我在ajax方法的成功函数中呈现数据。 Evrything除图像显示外完美无缺。在数据库中,我存储图像名称。我尝试使用下面的代码来展示它:
var zmienna='images/ksiazki/'+data[i]['source']+'.jpg'
<div class="book-image"><img src="{{asset(zmienna)}}" class="img-responsive"/></div>
它不起作用。请帮忙。也许我对这个任务的处理方法是错误的?我应该如何正确地在Symfony2中做到这一点?是否可以将ajax结果'数据发送到javascript部分而不是发送到twig模板的主要部分?
感谢您的进步。
答案 0 :(得分:0)
您希望在服务器端(twig)上显示JavaScript变量,因此它永远不会起作用。
如果要显示此项,则在执行ajax调用后,您需要创建img元素并将其添加到book-image div
使用jquery,您可以执行以下操作。将成功函数添加到ajax调用
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class NewClass {
public static void main(String[] args) {
List<Integer> intList = Arrays.asList(18, 21, 9, 12, 99, 4, 101, 8, 14, 7, 112, 98);
List<List<Integer>> chunks = breakIntoChunks(intList);
for(List<Integer> chunk : chunks){
System.out.println(chunk);
}
}
private static List<List<Integer>> breakIntoChunks(List<Integer> intList) {
List<List<Integer>> chunks = new ArrayList<>();
int curr =0;
for(int i = 0; i<intList.size()-1; i++){
if(intList.get(i).compareTo(intList.get(i+1))>0 || i==intList.size()-1){
chunks.add(intList.subList(curr, i+1));
curr = i+1;
}
}
if(curr<=intList.size()){
chunks.add(intList.subList(curr,intList.size()));
}
return chunks;
}
}
这假设在你的JSON中有一些带有src属性的元素。像这样:
success: function (response) {
for(var el in response) {
var el = '<img src=" + ' el.src ' +" class="img-responsive"/>'
$(".book-image").append(el);
}
}