2017-09-06 57 views
2

我是ajax的初学者。现在我正在使用Laravel 5.4,并且我想在我的视图中填充我的控制器中查询的城市,以便输出。JSON对象填充在我的HTML选择使用javascript

这里是我的代码:

function getCities(province_id) { 
    $('#city_id').empty(); 
    $.ajax({   
     url: "{{ url('city') }}/" +province_id,   
     type: "GET", 
     dataType: "JSON", 
      success: function(data) { 
       var opts = $.parseJSON(data); 
       // Use jQuery's each to iterate over the opts value 
       $.each(opts, function(i, d) {      
        $('#city_id').append('<option value="' + d.city_id + '">' + d.city_name + '</option>'); 
       }); 
      } 
    }); 
} 

在我的控制,我有这样的:

public function getmycity($province_id) { 
     $cities = DB::table('cities') 
     ->select('cities.city_id','cities.city_name') 
     ->where(['cities.province_id' => $province_id]) 
     ->get(); 

     return $cities; 
    } 

我已经有了JSON对象的回报率在我的网络,我见过的所有数据对象。

JSON  
0 Object 
city_id 28 
city_name Test City 

请帮我把它放在我的选择。

我没有错误,但它没有填充我的选择类型与我的查询值。

这里是我的看法:

<div class="form-group"> 
       <label class="control-label col-sm-4" for="email">City/Municipality :</label> 
       <div class="col-sm-8"> 
        <select class="form-control" id="city_id" name="city_id"> 
         <option>Select city/municipality</option>     
        </select> 
       </div> 
       </div> 
+0

你好,如果你的getmycity方法返回JSON正确,然后选择下拉菜单应相应地填充。请看看它在这里工作:https://jsfiddle.net/tjg8rmgu/2/ – Rakib

+0

或者你可以通过使用下面的线路返回响应() - > json($ cities)来检查;在getmycity方法。 – Rakib

+0

@Rakib请帮我先生仍然答案不是我的问题的解决方案 –

回答

0

试着改变你的分贝结果在纯阵列是这样的:

$cities = json_decode(json_encode($cities),true); 

然后return它:

return $cities; 

而且, 当你已经写了dataType:'JSON',那么不需要解析你的回应,你可以尝试没有var opts = $.parseJSON(data);这样var opts = data;

希望这会帮助你...

+0

hey Jc John,我很高兴我的回答对你有帮助。我可以得到一个投票吗? 非常感谢... :-) –

+0

opps hello sir @Himanshu我认为它已经解决了我的问题,但仍然没有填充 –

+0

SyntaxError:JSON.parse:JSON数据的第1行第1列的意外字符 –