使用带有laravel的ajax从数据库中检索数据

时间:2016-04-09 19:21:58

标签: ajax laravel

我可以从数据库中选择一个值并将其扔到<div>内 我的问题是,我不知道如何这样做并遵循MVC规则,因为我正在使用Laravel框架。

这是我到目前为止所做的:

的index.php

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="https://code.jquery.com/jquery-2.2.3.min.js"   integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo="   crossorigin="anonymous"></script>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script src="script.js"></script>
</head>
<body>
    <div id="wrapper">
        <input type="button" id="btn" value="Click Me :)"></input>
    </div>
</body>
</html>  

Ajax.php

<?php

include ('db.php');

$pdo = connect();

$dados = $pdo->prepare("SELECT field FROM table WHERE id = ?");
$dados->execute(array("2"));
$usr = $dados->fetch(PDO::FETCH_ASSOC);


echo "<p> Nome:" .$usr["nome"]. "</p>"; //Teste  

的script.js

$(document).ready(function(){
    $('#btn').click(function(){
        $.ajax({
        url: "ajax.php",
        type: "GET",
        dataType: "html", //expected return type        
        success: function(response){
            $('#calendario').fullCalendar(
            'renderEvent',
            {
                title: 'Novo evento',
                start: '2016-04-06T08:00:00', // I need to put the data here
                end:'2016-04-06T10:30:00'    // And here aswell
            }
        );
        }

    })

    });
});

我将此作为测试,它正在运行......我怎样才能使用Laravel MVC做同样的事情?在这里,我不得不创建一个自定义的php文件(ajax.php)来进行选择。有没有办法使用我的Controller /Model做同样的事情?

2 个答案:

答案 0 :(得分:2)

是。您要做的是让URL指向您指定的路由(URL)。您可以在app / Http / routes.php中指定路由,如下所示:

    // Perform some action
    Route::get('/whatever/url/you/like', 'SomeController@someAction');

这将寻找&#34; GET&#34;方法调用,这意味着您也可以从浏览器进行测试。第一个参数是您要使用的URL,第二个参数是Controller,@符号,然后是您想要调用的公共函数。

在您创建的控制器类中,您将返回一个包含要返回的数据的数组。 Laravel默认情况下会自动将该数组转换为JSON供您使用。

如果您要询问如何分离代码(控制器中应该包含哪些内容以及模型中应该包含哪些内容),那么您可以在命令行中使用artisan命令让Laravel自动创建一个空白控制器类,为您提供对象上常见操作的公共函数:

php artisan make:controller PhotoController

可以找到更多信息in Laravel's documentation。如果将控制器中的代码限制为对使用Model类创建的对象执行的操作,那么这将在很长的路要走。希望这有帮助!

如果在浏览器中输入AJAX调用的URL返回一些JSON,那么您就在正确的轨道上。从发出呼叫的JavaScript,&#34;响应&#34;变量应包含该数据。如果您需要对其进行分析,请使用Chrome DevTools并添加一个检查点,以便您可以准确分析该变量中的返回值。另一种方法是使用console.log将该数据打印到浏览器的控制台。

答案 1 :(得分:1)

控制器

public function testajax($id) {

$test = table::findorfail($id)->toarray();
return response()->json($test);
}

的javascript

$(document).ready(function()
                      {
                       $(document).on('submit', '#reg-form', function()
                       {

                      var data = $(this).find("#post_id").val();
                        $.ajax({
                        type : 'GET',
                        url  : {{url("/ajax")}}',
                       data: data,
                       success: function(data) {
                          console.log(data);
                      },
                            error :  function(data)
                            {
                                alert("error");
                            }
                        });
                        return false;
                       });
                      });

路由文件

Route::get('/ajax/{id}', 'Contoller@testajax');

这段代码确实有效,但这就是它的完成方式