2016-06-13 3 views
0

В настоящее время я работаю над выпадающим списком и имею много проблем. Его зависимое выпадающее меню, и до сих пор я могу получить правильные данные, когда я делаю выбор в первом выпадающем списке, но не могу отобразить его во втором раскрывающемся списке. Я знаю, что получаю данные, потому что вижу это во время отладки на хроме. Это пример того, что я получаю:Json parsererror в раскрывающемся списке

Object {readyState: 4, responseText: "{"Hardware":1,"Software":2,"Other":3,"option":10}Page generated in 0.2831 seconds.<br><br><br>", status: 200, statusText: "OK"} 
parsererror 
Object {readyState: 4, responseText: "{"General":5,"Books":6}Page generated in 0.2902 seconds.<br><br><br>", status: 200, statusText: "OK"} 
parsererror 

Это мой Javascript код:

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#request_department").change(function(){ 
     var data = { 
      department_id: $(this).val() 
     }; 
     $.ajax({ 
      type: 'POST', 
      {#url: '{{ path("select_options") }} ?category_id' + dep,#} 
      url: "{{ url('select_options') }}?dep_id=" + data.department_id, 
      data: data, 

      success: function(data) { 
       window.alert('hi'); 
       var $option_selector = $('#request_option'); 

       $option_selector.html('<option>Option</option>'); 

       for (var i=0, total = data.length; i < total; i++) { 
        $option_selector.append('<option value="' + data[i].id + '">' + data[i].option + '</option>'); 
       } 
      }, 
      error: function(xhr, error){ 
       console.debug(xhr); console.debug(error); 
      }, 
     }); 
    }); 
}); 
</script> 

И этот код в контроллере:

public function optionAjaxAction(Request $request) 
    { 

     if (!$request->isXmlHttpRequest()) { 
      throw new NotFoundHttpException(); 
     } 

     $id = $request->query->get('dep_id'); 

     $result = array(); 

     // Return a list of options, based on the selected department 
     $repo = $this->getDoctrine()->getManager()->getRepository('MyBundle:RequestOption'); 
     $option = $repo->findByDepartment($id, array('department' => 'asc')); 
     //var_dump($hardware); 
     foreach ($option as $o) { 
      $result[$o->getOption()] = $o->getId(); 
     } 

     return new JsonResponse($result); 
    } 

Im отчаянное. Я бы очень признателен за любую помощь! Заранее спасибо (:

+1

Вам нужно выяснить, где 'Время генерации страницы # #### seconds.' впрыскивается в окончательный ответ. Возможно, вы (или загруженный пакет) создали [фильтр ответов] (https://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html#after-filters-with- the-kernel-response-event). – Yoshi

ответ

2

Как вы производите json и у вашего клиента не имеют dataType набор, поэтому, dataType='text' рассматривается как интеллектуальное предположение

Было бы лучше, если вам нужно добавить dataType:'json',. в вашем АЯКС вызова.


в качестве стороны не вы не должны посылать те же данные дважды. вы отправляете его в Ajax URL и в data объекта тоже.

Попробуйте удалить из URL:.

var data = { 
    dep_id: $(this).val() 
}; 


url: "{{ url('select_options') }}", 
data: data, 
+0

Уже сделал, не работал. На самом деле я стер его за этот вопрос, потому что в другом вопросе я обнаружил, что это проблема. :/Дополнительные предложения? – OmarAguinaga

+0

обновленная проверка, если это так. – Jai

+0

Возможно, у javascript есть проблемы, но это, безусловно, не самая непосредственная проблема. Ответ сервера содержит дополнительный текст, что делает json недействительным. Прежде всего, это должно быть исправлено. – Yoshi

Смежные вопросы