想要实现什么目标?
在更改选择列表的选择时,控制器选择此selectedIndex,将SQL查询发送给模型,并通过选择列表下的ajax返回结果。在普通的PHP环境中这很容易做到,但我在Laravel环境中感到困惑。
如果不清楚:我想要的是:在Laravel环境中完成http://www.w3schools.com/php/php_ajax_database.asp
更新:我使用了鼬的指示改进了代码:
如果我可以使用简单的Ajax,但建议使用JQUERY / JSON,不知道为什么这不起作用。
<script>
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
}
</script>
然后PHP获取东西等等,会很容易。
所以,JQUERY / JSON会或多或少地像这样,虽然我不知道如何完成它
$('#ajax').submit(function(e){
$.ajax({
url: '<?php echo route("hint");?>',
type: 'POST',
data: { especialidades: $('especialidades').val() },
dataType: 'json',
success: THIS WOULD BE A FUNCTION THAT WOULD PRINT THE RESULTS FROM THE CONTROLLER
}
});
e.preventDefault();
});
我自己的表格看起来像这样:
<form role="form" class="bg-success" id="ajax">
<div class="form-group">
<select name ="especialidades" id = "especialidades" class="form-control" onchange="showHint(this.value)">
<?php foreach($data['kategori'] as $detalle): ?>
<option value="<?php echo $detalle->id_specialty; ?>"><?php echo $detalle->spec_description; ?></option>
<?php endforeach;?>
</select>
</div>
</form>
<div id="txtHint"><b>Person info will be listed here.</b></div>
控制器应如下所示:
class Hint extends BaseController{
public $restful = true;
public function post_appajax()
{
NEED TO GET THE SELECTED INDEX SENT BY THE JQUERY SCRIPT IN THE VIEW: HOW??
SOMETHING EQUAL TO THIS ===> ::json(Input::get('especialidades'));
}
}
和路线就像这样:(由鼬)
Route::post('hint', array(
'as' => 'hint',
'uses' => 'Hint@getHint'
));
答案 0 :(得分:0)
实际上非常简单。
<强> routes.php文件强>
Route::post('hint', array(
'as' => 'hint',
'uses' => 'HintController@getHint'
));
<强> HintController.php 强>
class HintController extends BaseController {
public function getHint()
{
return Response::json(//whatever you want);
}
}
查看强>
$.ajax({
url: '<?php echo route("hint");?>', //<-------- see this
type: 'POST',
data: { especialidades: $('especialidades').val() },
dataType: 'json',
success: SEND IT TO THE CONTROLER HOWEVER YOU CAN...
}
});
休息将由你决定。
答案 1 :(得分:0)
根据控制器中的方法名称,路径应为(Laravel-3:RESTfull controller)
Route::post('hint', array( 'as' => 'hint', 'uses' => 'Hint@appajax'));
您的控制器
class Hint extends BaseController{
public $restful = true;
public function post_appajax()
{
// ...
}
}