2017-02-13 3 views
0

Привет Я пытаюсь заполнить свои таблицы в моем представлении JSP после отправки переменной в функцию Ajax.Заполните таблицу Bootstrap после запроса Ajax (JSP и Spring MVC)

<script type="text/javascript"> 
      function filterByDate() { 

       var count = 680; 

       $.ajax({ 
        url : 'filterOnDate', 
        data : { 
         "count" : count 
        }, //here you send the daterange over an Ajax request and by default it's sended with a GET method 
        success : function(data) { 
         //alert(data); //here you will see an alert displaying the callback result coming from your spring controller 
         console.log("Request succeeded!"); 
         console.log(data); 
        }, 

        error : function(xhr, ajaxOptions, thrownError) { 
         if (xhr.status == 404) { 
          alert(thrownError); 
         } 
        } 

       }); 
      } 
     </script> 

Этот запрос Ajax является отправьте UserController, которые получают это переменные и отправить его в модель для выполнения критериев поиска Hibernate в базе данных.

@RequestMapping(value = "/eblinb2b/filterOnDate", method = RequestMethod.GET) 
public @ResponseBody List<EblInvB2B> filterByDate(Model model, @RequestParam("count") int count) { 

    // Fetch data from the DAO 
    List<EblInvB2B> eblinb2b_filter_counting = accountSservice.findByDateRangeEB2B(count); 

    // We add to the model (JSP page the list of EBLINVB2B) 
    model.addAttribute("eblinb2b_filter_counting", eblinb2b_filter_counting); 

    return eblinb2b_filter_counting; 

} 

Я уже проверил, если запрос спящего режима извлечения информации из таблицы COLUMN после того как я поставил точку останова отладки я вижу мой список с объектами.

Это метод DAO с критериями Hibernate:

@SuppressWarnings("unchecked") 
@Override 
public List<EblInvB2B> findDateRange(int count) { 

    Criteria criteria = createEntityCriteria(); 

    criteria.add(Restrictions.eq("count", count)); 
    return (List<EblInvB2B>) criteria.list(); 
} 

Что я хотел бы сделать, это заполнить мой стол с ответом на мой Ajax только с рядами, где я применил критерии, который является подсчет который исходит из моего запроса Ajax, он равен 680, это целое число и должно заполнить мою таблицу jsp только одной строкой.

Только для информации: У меня есть Разное JSP-представление, где у меня есть кнопка «Обновить» для заполнения базы данных mySql, на самом деле это пакет, который unmarshall XML-файлы и помещает их в базу данных. Это метод UserController:

@RequestMapping(value = "/eblinb2b/OutInCompare", method = RequestMethod.GET) 
public String eblinb2bOutInCompare(Model model) { 

    // Fetch data from the DAO 
    List<EblInvB2B> eblinb2b_list = accountSservice.findAllEblInvB2B(); 

    // We add to the model (JSP page the list of EBLINVB2B) 
    model.addAttribute("eblinb2b_list", eblinb2b_list); 


    return "eblinb2bCompare"; 

} 

Здесь я хочу, чтобы отобразить на мой взгляд, список, принятый мой метод контроллера на мой взгляд, JSP. Я не знаю, правильно ли это? : Bootstrap PAGE

https://jsfiddle.net/eaL38ejr/

Спасибо всем за помощь!

+0

Вы получаете данные здесь 'console.log (data);'? –

+0

@ VinothKrishnan Я отредактировал мой главный вопрос, может быть, он даст вам больше информации о моих проблемах, спасибо много! – algorithmic

+0

В вашем контроллере он получает два параметра, но в вашем ajax вы отправляете только объект count not model. Это может вызвать проблему. –

ответ

1

После получения данных из ajax вам следует загрузить таблицу начальной загрузки.

<script type="text/javascript"> 
    function filterByDate() { 

     var count = 680; 

     $.ajax({ 
      url : 'filterOnDate', 
      type: 'GET', 
      dataType:'json', 
      data : { 
       "count" : count 
      }, //here you send the daterange over an Ajax request and by default it's sended with a GET method 
      success : function(data) { 
       //alert(data); //here you will see an alert displaying the callback result coming from your spring controller 
       console.log("Request succeeded!"); 
       console.log(data); 
       $('#tableID').bootstrapTable('load', data); 
      }, 

      error : function(xhr, ajaxOptions, thrownError) { 
       if (xhr.status == 404) { 
        alert(thrownError); 
       } 
      } 

     }); 
    } 
</script> 

Или освежать,

$('#tableID').bootstrapTable('refresh', { 
    url: 'filterOnDate?count='+count 
}); 

Редактировать

Ajax 406 указывает на ваш запрос не является приемлемым, поэтому вам необходимо обновить метод контроллера, как показано ниже.

@RequestMapping(value = "/eblinb2b/OutInCompare", method = RequestMethod.GET, 
        headers="Accept=*/*",produces = "application/json") 
public @ResponseBody List<EblInvB2B> filterByDate(Model model, @RequestParam("count") int count) { 

// Fetch data from the DAO 
List<EblInvB2B> eblinb2b_filter_counting = accountSservice.findByDateRangeEB2B(count); 

// We add to the model (JSP page the list of EBLINVB2B) 
model.addAttribute("eblinb2b_filter_counting", eblinb2b_filter_counting); 

return eblinb2b_filter_counting; 

} 

Как включить type и dataType параметра в запросе Ajax. Дайте мне знать, если это поможет.

+0

Спасибо за помощь и время. Похоже, что когда я отправляю запрос, ответа нет. Когда я открываю представление инструмента разработки на Chrome, у меня есть эта ошибка: GET http: // localhost: 8080/gms/eblinb2b/filterOnDate? Count = 680 406() – algorithmic

+0

406 код ajax указывает, что ваш метод ** неприемлем **. Проверьте мои обновления в части ajax и контроллера. –

+0

Теперь я говорю «Faild для загрузки данных ответа», я снова отредактировал свой вопрос, поскольку я даю вам свою таблицу JSP. Большое вам спасибо за ваше терпение – algorithmic