Php 在Laravel4中将数据从数组显示到动态选择框(jQuery-AJAX)
我正在尝试使用jQuery实现一个动态选择框,但我遇到了一些问题。。。 我有一个“路由”来访问我的数据库并获取新选择框的数据:Php 在Laravel4中将数据从数组显示到动态选择框(jQuery-AJAX),php,jquery,ajax,arrays,laravel,Php,Jquery,Ajax,Arrays,Laravel,我正在尝试使用jQuery实现一个动态选择框,但我遇到了一些问题。。。 我有一个“路由”来访问我的数据库并获取新选择框的数据: Route::get('contenidos/comboasign/{asignatura_id}', array('uses' => 'ContenidoController@comboAsignBloque')); 我的控制器: public function comboAsignBloque($asignatura_id) { if(Request
Route::get('contenidos/comboasign/{asignatura_id}', array('uses' => 'ContenidoController@comboAsignBloque'));
我的控制器:
public function comboAsignBloque($asignatura_id)
{
if(Request::ajax()){
$bloques = DB::table('bloques')->where('asignatura_id','=', $asignatura_id)->orderBy('nombre', 'asc')->lists('id','nombre');
return json_encode(array("bloques" => $bloques));
}
}
在我看来,我有表格和这个js:
$(document).ready(function(){
// Obtenemos los datos del selecbox1
$("#select_asignatura").change(function(e){
e.preventDefault();
var asignatura_id = $("#select_asignatura option:selected").val();
// AJAX request
$.get('comboasign/'+asignatura_id, function(data){
// #select_bloque is the select where I want to show my new options
var select = $('#select_bloque');
select.empty();
// select.html(data);
var optionsarray = data.split(',');
var seloption = " ";
$.each(optionsarray, function(i){
seloption += '<option value="' + optionsarray[i] + '">' + optionsarray[i] + '</option>';
select.append(seloption);
});
});
});
});
我需要将此数组放入我的选择框中,但我无法找到如何。。。
非常感谢您的帮助。首先,使用浏览器调试器检查您是否确实从$.get…返回了一些数据。。。。打电话 在返回JSON数据时,可以使用
$.getJSON('comboasign/'+asignatura_id, function(data){
这将自动将返回的JSON字符串数据转换为javascript数据类型,在您的案例中,当您使用
json_encode(array("bloques" => $bloques));
您还可以通过执行以下操作使返回的数据更易于访问
json_encode( $bloques );
您认为对象复制就是因为这个原因
var seloption = " ";
$.each(optionsarray, function(i){
seloption += '<option value="' + optionsarray[i] + '">' + optionsarray[i] + '</option>';
select.append(seloption);
换成
var seloption = " ";
$.each(optionsarray, function(i){
seloption += '<option value="' + optionsarray[i] + '">' + optionsarray[i] + '</option>';
)};
select.append(seloption);
正如我在问题中所写,我已经返回了一些数据,但问题是我不知道如何正确地显示它。我尝试了你的“$.getJSON”,但没有得到任何响应…:请看,谢谢,但我的问题是,我不知道如何从我获得的数组中设置“value”id和“text”nombre…我知道了。。。我的问题出在控制器上。我必须使用这样的foreach创建一个数组:$bloque_id=DB::table'bloques'->其中'asignatura_id','=',$asignatura_id->orderBy'nombre','asc'->列出'id','nombre';foreach$bloque_id as$key=>$value{$resources[]=arraynombre=>$key,id=>$value;}$resources_JSON_array=JSON_encode$resources;返回$resources\u JSON\u数组;然后,在我的“js”中,我正确地调用每个值和文本:$.eachmyData,functioni{selpoption+=+myData[I].nombre+;select.appendselpoption;};我现在唯一需要解决的是,我正在获取一些复制的对象…:
var seloption = " ";
$.each(optionsarray, function(i){
seloption += '<option value="' + optionsarray[i] + '">' + optionsarray[i] + '</option>';
)};
select.append(seloption);