如何将此ajax调用中的id传递给TestController getAjax()函数?当我进行调用时,url是testUrl?id = 1
Route::get('testUrl', 'TestController@getAjax');
<script>
$(function(){
$('#button').click(function() {
$.ajax({
url: 'testUrl',
type: 'GET',
data: { id: 1 },
success: function(response)
{
$('#something').html(response);
}
});
});
});
</script>
TestController.php
public function getAjax()
{
$id = $_POST['id'];
$test = new TestModel();
$result = $test->getData($id);
foreach($result as $row)
{
$html =
'<tr>
<td>' . $row->name . '</td>' .
'<td>' . $row->address . '</td>' .
'<td>' . $row->age . '</td>' .
'</tr>';
}
return $html;
}
答案 0 :(得分:14)
最后,我刚刚将参数添加到Route :: get()和ajax url调用中。我在getAjax()函数中将$ _POST [&#39; id&#39;]更改为$ _GET [&#39; id&#39;],这得到了我的回复
Route::get('testUrl/{id}', 'TestController@getAjax');
<script>
$(function(){
$('#button').click(function() {
$.ajax({
url: 'testUrl/{id}',
type: 'GET',
data: { id: 1 },
success: function(response)
{
$('#something').html(response);
}
});
});
});
</script>
TestController.php
public function getAjax()
{
$id = $_GET['id'];
$test = new TestModel();
$result = $test->getData($id);
foreach($result as $row)
{
$html =
'<tr>
<td>' . $row->name . '</td>' .
'<td>' . $row->address . '</td>' .
'<td>' . $row->age . '</td>' .
'</tr>';
}
return $html;
}
答案 1 :(得分:6)
你的ajax的方法是GET但是在控制器中你使用$ _POST来获取 值。这是问题。
你可以
$id = $_GET['id'];
但在Laravel,它有一个很好的方法来做到这一点。这是here。您无需担心用于请求的HTTP谓词,因为所有谓词都以相同的方式访问输入。
$id = Input::get("id");
如果需要,可以过滤请求类型以控制异常。 Docs here
确定请求是否使用AJAX
if (Request::ajax())
{
//
}
答案 2 :(得分:0)
#in your controller function
public function getAjax()
{
#check if request is ajax
if ($request->ajax()) {
//your code
}
return $your_data;
}