在laravel中发送ajax后,自定义文件中的laravel查询?

时间:2017-06-02 08:53:27

标签: mysql laravel

我在服务器上创建了一个ajax.php文件,并使用带有jquery的ajax将id发送到该文件。

我想在该ajax.php文件中运行db查询以获得结果。

我无法做到这一点。

你能帮我吗?

Jquery代码:

$('.invitebyemail').click(function(){
    var email = $('#add-members-event-email').val();
    var eventid = $('.eventid').val();
    var pathname = window.location.pathname; // Returns path only
    var url      = window.location.href;     // Returns full URL
    var APP_URL = {!! json_encode(url('/')) !!};
    alert(APP_URL);
    alert(url);
    $.ajax({
        url: APP_URL+'/ajax.php',
        type: 'POST',    
        data: { id: eventid },
        success: function (data) {
            alert(data);
        },
        error: function () {
            alert('error');
        }
    });
    return false;
});

Ajax文件代码:

use DB;
$eventid = $_POST['id'];
echo $eventid;
$users = DB::table('users')->get();
print_r($users);

由于

1 个答案:

答案 0 :(得分:1)

如果您正在使用laravel,我不相信使用.php文件就是这样做的正确方法......它并没有真正遵循MVC模式。

我建议创建一个控制器php artisan make:controller MyController 在控制器上创建一个函数

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator;
use Session;
use Auth;
use Response;
use DB;
use App\User;

class MyController extends Controller{
  public function getUsers(Request $request){
    $users = DB::table('users')->get();
    // If you need access to request parameters use this ( $request->id ) being id the parameter name 
    return response()->json(["users" =>$users]);
  }

}

在ProjectFolder / routes / web.php中创建一个像这样的路径

Route::post('/getUsersAjax',[
  'uses'=>'MyController@getUsers',
  'as'=>'getUsers'
]);

在你的jquery中别忘了将_token添加到你的数据data: { id: eventid , _token : token}, (如果你需要这个令牌,你可以在.blade.php文件中,你的视图,使这个

<script>
   var token = "{{Session::token()}}";
   var urlRequest = "{{route('getUsers')}}";
</script>

https://laravel.com/docs/5.4/controllers

https://laravel.com/docs/5.4/routing