2017-09-18 7 views
-2

여기에서 재료 설계 라이트를 사용하여 다음과 같은 코드를 작성했지만 해당 필드에 결과가 표시되지 않습니다. 여기 내 코드는,보고Codeigniter를 사용하여 재질 디자인에서 ajax 호출을 작성하십시오.

<script> 
$('#type').change(function(){ 
    var type=$('#type').val(); 
    alert(type); 
    var url='<?php echo base_url(); ?>admin/vehicle/ajax_vehicle'; 
    alert(url); 
    $.post(url, {type:type}, function(data) 
    { 
    alert(); 
    componentHandler.upgradeDom();  
    $('#vehicle').html(data); 
    }); 
}); 
</script> 

을하시기 바랍니다 여기

public function ajax_vehicle() 
{ 
    $data['vehicle']=$this->Vehicle_model->view_available_vehicles($_POST['type']); 
    //var_dump($data['vehicle']); 
    $this->load->view('admin/vehicle/ajax_vehicle',$data); 
} 

가 여기 내보기 페이지

<div class="input-field col s12"> 
     <select required name="vehicle_id" id="vehicle"> 
     <option value="" selected>Select</option> 


     </select> 
     <label>Select Vehicle</label> 
</div> 

var type=$('#type').val();가 값을 받고 내 컨트롤러입니다. 내가 그것을 콘솔 때 난이, 내 ajax_vehicle입니다 choosed 할 유형을 선택한 후이의 내용을 표시하기 위해 필요한이

<select required name="vehicle_id"> 
    <option value="">Select</option> 
    <option value="42" >bullet</option> 
    <option value="41" >pulsar</option> 
</select> 

같은 결과를 얻었다.

<select required name="vehicle_id"> 
<option value="">Select</option> 
<?php if(empty($assign_vehicle_info)){ 
     if (!empty($vehicle)) { 
     foreach ($vehicle as $veh) {?> 
<option value="<?= $veh->id ?>"<?php if (!empty($assign_vehicle_info)) { echo $assign_vehicle_info->vehicle_id == $veh->id ? 'selected' : ''; } ?>><?= $veh->name ?></option> 
<?php }}}?> 
</select> 

실제로, 당신이 상태로 나를 data

<select required name="vehicle_id"> 
    <option value="">Select</option> 
    <option value="42" >bullet</option> 
    <option value="41" >pulsar</option> 
</select> 

을 포함

+0

어떤 디버깅을 했습니까? 아약스 호출이 성공합니까? 'data' 내에서 값을 반환합니까? 기본적인 디버깅이 필요합니다. 기본적으로 "효과가 없다"고 말했으며 구체적인 오류 정보는 제공하지 않았습니다.그것은 여러 장소에서 실패 할 수 있지만 특정 오류 정보 없이는 우리는 추측 할 수 있습니다 - 여러 가지 가능성을 창출하기에 충분한 미지수가 있습니다. – ADyson

+0

'base_url()'이 끝에'/'를 추가합니까? 그렇지 않다면 하나 추가하십시오! – delboy1978uk

+0

아약스 요청이 작동합니까? 웹 브라우저의 네트워크 패널을 사용하여이를 확인할 수 있습니다. – srimaln91

답변

0

경우 해결하는 데 도움이 work.pleae이에 추가 할 추가로 어떤 것들을 그 결과를 모르는 $('#vehicle').html(data);

<select required name="vehicle_id" id="vehicle"> 
    <select required name="vehicle_id"> 
    <option value="">Select</option> 
    <option value="42" >bullet</option> 
    <option value="41" >pulsar</option> 
    </select> 
</select> 

입니다. 무의미하고 잘못된 HTML html() 함수는 요소 자체가 아닌 내부 HTML을 선택한 요소로 바꿉니다.

당신은 두 가지 옵션이 있습니다

1) 서버 출력 (즉 ajax_vehicle보기 변경을) 그래서 그냥 <option> 요소를 반환 -뿐만 아니라 <select>의 외부 부품을 반환 할 필요. 따라서 아약스 호출에서 반환 된 결과 data은 (예를 들어)를 포함해야합니다 :

<option value="">Select</option> 
<option value="42" >bullet</option> 
<option value="41" >pulsar</option> 

는 그런 다음 이전 $('#vehicle').html(data);를 계속 사용할 수 있습니다.

OR

2)를 사용 replaceWith, 즉 $("#vehicle").replaceWith(data); 대신 .html(). 그러나이 경우 <select>id="vehicle" 마크 업이 포함되도록 서버 출력을 수정해야합니다. 그렇지 않으면 "차량"이라는 요소가 더 이상 존재하지 않으므로이 코드는 두 번째로 작동하지 않습니다. 또한 "Vehicle"요소에 설정된 이벤트 핸들러 등이있는 경우 전체 요소를 대체 했으므로 다시 작성해야합니다. http://api.jquery.com/replacewith/

제 생각에는 옵션 1이 더 나은 선택입니다.

+0

나는 두 경우를 모두 테스트했지만 불행히도 아무 것도 얻지 못했습니다 –

+0

내가 두 번째로했을 때 개념 나는 방금 태그가 포함되지 않았습니다. –

+0

"아무 것도 얻지 못했습니다"는 오류 메시지 또는 문제 설명이 아닙니다. 귀하의 페이지를보고 구체적으로 작성하십시오. 코드를 실행 한 후 브라우저의 개발자 도구에서 "차량"요소의 모양을 확인할 수 있습니다. 첫 번째 옵션을 사용하면 무엇이 포함되어 있습니까? 새로운 옵션 만 포함해야합니다. – ADyson