Symfony2过滤结果 - ajax请求问题

时间:2016-10-13 12:11:29

标签: javascript php jquery ajax symfony

我是 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模板的主要部分?

感谢您的进步。

1 个答案:

答案 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);
    }
}