Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel ajax post返回500个内部服务器错误_Php_Jquery_Ajax_Laravel_Laravel 5.2 - Fatal编程技术网

Php Laravel ajax post返回500个内部服务器错误

Php Laravel ajax post返回500个内部服务器错误,php,jquery,ajax,laravel,laravel-5.2,Php,Jquery,Ajax,Laravel,Laravel 5.2,我想在从文本框的下拉列表中选择一个值后,通过AJAX请求加载一些数据。但是,从下拉列表中选择后,它将显示500(内部服务器错误)。我如何解决它 以下是我的AJAX代码: $('#teacher').on('change',function(e){ var tech_id = $('#teacher option:selected').attr('value'); $.ajaxSetup({ headers: { 'X-CSRF-TOKE

我想在从文本框的下拉列表中选择一个值后,通过AJAX请求加载一些数据。但是,从下拉列表中选择后,它将显示
500(内部服务器错误)
。我如何解决它

以下是我的AJAX代码:

$('#teacher').on('change',function(e){  
    var tech_id = $('#teacher option:selected').attr('value');
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    $.ajax({ 
        type: "POST", 
        url: "{{url('ajaxteach')}}",
        data: {
            tech_id: tech_id
        },
        success: function(data) { 
            var json_obj = jQuery.parseJSON(data); 
            $('#credit_taken').val(json_obj.credit_taken); 
            $('#remaining_credit').val(json_obj.remaining_credit); 
        } 
    });
});
这是我的控制器

public function get_teach(Request $request)
{
    $tech_id = $request::input(['tech_id']);      
    $teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();    
    return Response::json($teachers); 
}
路线如下:

Route::post('ajaxteach', [
    'uses' => 'CourseController@get_teach',
    'as' => 'ajaxteach',
]);

在jqueryajax上调用传递

teach_id: teach_id
控制器查看
tech\u id
您也忘记了
query()
,应该是正确的

$tech_id = $request::input(['teach_id']);      
$teachers= \App\Teacher::query()->where('teacher_id','=',$teach_id)->get();

在jqueryajax上调用传递

teach_id: teach_id
控制器查看
tech\u id
您也忘记了
query()
,应该是正确的

$tech_id = $request::input(['teach_id']);      
$teachers= \App\Teacher::query()->where('teacher_id','=',$teach_id)->get();
你不应该这样做:

$request::input(['tech_id'])

你有一个对象,所以你不应该用静态的方法得到它。您可以对
$request
对象使用
get()
方法:

$request->get('tech_id')

因此,整个控制器方法是:

public function get_teach(Request $request)
{
    $tech_id = $request->get('tech_id');      
    $teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();    
    return Response::json($teachers); 
}
你不应该这样做:

$request::input(['tech_id'])

你有一个对象,所以你不应该用静态的方法得到它。您可以对
$request
对象使用
get()
方法:

$request->get('tech_id')

因此,整个控制器方法是:

public function get_teach(Request $request)
{
    $tech_id = $request->get('tech_id');      
    $teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();    
    return Response::json($teachers); 
}

试试这个,在你的原始函数中有一些看起来像潜在的问题。否则,您需要发布错误的详细信息

public function get_teach(Request $request)
{
    $tech_id = $request -> tech_id;
    $teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();
    return response() -> json($teachers); 
}

试试这个,在你的原始函数中有一些看起来像潜在的问题。否则,您需要发布错误的详细信息

public function get_teach(Request $request)
{
    $tech_id = $request -> tech_id;
    $teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();
    return response() -> json($teachers); 
}

您可以随时查看laravel.log(storage/logs/laravel.log)

默认情况下,laravel使用“id”作为主键。 如果您没有使用,则应在应用程序\教师模型上设置:

班主任口若悬河{
受保护$primaryKey='teacher_id';
}

因此,您可以在控制器中使用:


$teachers=\App\Teacher::find($tech\u id)

您可以随时查看laravel.log(storage/logs/laravel.log)

默认情况下,laravel使用“id”作为主键。 如果您没有使用,则应在应用程序\教师模型上设置:

班主任口若悬河{
受保护$primaryKey='teacher_id';
}

因此,您可以在控制器中使用:


$teachers=\App\Teacher::find($tech\u id)

我最近一直在研究这个问题。您已将标题“X-CSRF-TOKEN”添加到ajax请求中,如代码所示:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
但是,如果忘记将以下代码添加到页眉,则其值可能为空。尝试在头标签中添加以下内容:

<meta name="csrf-token" content="{{ csrf_token() }}" />


这可能会解决。

我最近一直在研究这个问题。您已将标题“X-CSRF-TOKEN”添加到ajax请求中,如代码所示:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
但是,如果忘记将以下代码添加到页眉,则其值可能为空。尝试在头标签中添加以下内容:

<meta name="csrf-token" content="{{ csrf_token() }}" />


这可能会解决。

对不起,输入错误。。但仍然会出现同样的错误!我已经添加了query(),但没有更改,仍然得到相同的错误。很抱歉,输入错误。。但仍然会出现同样的错误!我已经添加了query(),但没有任何更改,仍然得到相同的错误。如果您得到500,并且您处于开发环境中,那么您可以检查ajax的响应(来自服务器),例如在Chrome hit F12中,然后重新运行页面。然后进入chrome开发工具上的“网络”选项卡,找到请求文件(红色)。点击它并查看回复信息。谢谢兄弟,你的解决方案可能没有给出我问题的准确答案,但我有机会知道如何检查回复并找到错误。我解决了这个问题。如果你得到500并且你在开发环境中,你可以检查ajax的响应(来自服务器),例如在Chrome中点击F12并重新运行页面。然后进入chrome开发工具上的“网络”选项卡,找到请求文件(红色)。点击它并查看回复信息。谢谢兄弟,你的解决方案可能没有给出我问题的准确答案,但我有机会知道如何检查回复并找到错误。我解决了问题。检查网络响应,看看错误在说什么?这是发布控制器文件的方法吗?检查网络响应,看看错误在说什么?这是发布控制器文件的方法吗?