jquery – 在Laravel中使用AJAX与数据库交互

前端之家收集整理的这篇文章主要介绍了jquery – 在Laravel中使用AJAX与数据库交互前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习基于Model,View,Controller范例的Laravel PHP框架.我一直试图将AJAX融入我的简单入门应用程序……一个电话呼叫记录器.这是我通常放弃的地方.但是我拒绝了!

所以我有我的Phonecall模型:

class Phonecall extends Eloquent
{
// Creates an instance of the database object 
}

这是我的电话呼叫表:

MysqL> desc phonecalls;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| who        | varchar(200)     | NO   |     | NULL    |                |
| what       | varchar(200)     | NO   |     | NULL    |                |
| created_at | datetime         | NO   |     | NULL    |                |
| updated_at | datetime         | NO   |     | NULL    |                |
| initiator  | varchar(200)     | NO   |     | NULL    |                |
| info       | text             | NO   |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

我的视图列出了当前数据库中的所有呼叫(按谁和什么):

<!doctype html>
<html>
<head>
  <title>Title</title>
  <script type="text/javascript" 
           src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js">
</script>
</head>
<body>
<h1>Welcome</h1>
<p>Here's a list of recent phonecalls</p>
    <ul class="call-list">
    @foreach($phonecalls as $call)
        <li>{{ $call->who }} - {{ $call->what }} - 

        <a href="phonecalls/show/{{ $call->id }}">Show</a> | 

        {{ HTML::link('phonecalls/delete/'.$call->id,'Delete') }} | 
        {{ HTML::link('phonecalls/update/'.$call->id,'Update') }}
        </li>
    </ul>

    {{-- Placeholder for AJAX content --}}
    <div id="call-info">
    </div>
</body>
</html>

这是我的简单控制器:

class Phonecalls_Controller extends Base_Controller {    

// Use $this within a method the same way you
// would use the object name outside of the class

public function get_index()
    {
            $phonecalls = Phonecall::all();
            return View::make('phonecalls.index')->with('phonecalls',$phonecalls);
    }    
// ************************************
// DISPLAY CALL INFO
public function get_show($call_id)
{
    $call = Phonecall::find($call_id);

            // WHAT GOES HERE?

}

我希望用户能够在视图中单击“显示
在…内显示呼叫信息

<div id="call-info">
</div>

视图中的标签.

更新:

这是它做了什么……

我的get_show()方法

// ************************************
// SHOW CALL INFO
public function get_show($call_id)
{
$call = Phonecall::find($call_id);
return $call->info;
}

我的Javascript

//************************************
// Phonecall AJAX Example
//************************************
$(document).ready(function() {
  $('.call-list > li > a').click(function(e) {  // e=event
     e.preventDefault();
     var id = $(this).attr('id');
     $.get(BASE+'/phonecalls/show/'+id,function(data) {
     $("#call-info").html(data);
  })
});

解决方法

这可以通过多种方式完成.

首先,你可以这样做:

public function get_show($call_id)
{
    $call = Phonecall::find($call_id);

    return View::make('phonecalls.single')->with('phonecal',$call);

}

在这种情况下,您需要为单个电话呼叫创建模板并将其放入phonecalls文件夹中.

另一个选择是从Laravel应用程序返回JSON响应:

public function get_show($call_id)
{
    $call = Phonecall::find($call_id)->first();

    return Response::eloquent($call);

}

另一种选择是使用javascript MVC框架来轻松获取/更新AJAX数据,例如Backbone JS或Angular JS可以做到这一点.

无论哪种方式,如果您想要执行AJAX数据,您需要构建一个API,以便在常规站点和AJAX数据后端之间进行分离.

这是我的博客文章,其中包含有关如何完成此操作的大量详细信息:
http://maxoffsky.com/code-blog/building-restful-api-in-laravel-start-here/

此外,在Laravel中对AJAX的一个很好的介绍是Dayle Rees的Code Happy,AJAX内容章节:
codehappy.daylerees.com/ajax-content

如果您有更多问题,请告诉我,如果您觉得我有帮助,请批准此评论.谢谢!

更新:

要从控制器(或Laravel路由)实际加载内容,您需要使用jQuery ajax,GET(加载数据)或POST(发布表单结果)
这是一个例子:

$('#get-info').click(function(e) {  // e=event
        e.preventDefault();
        var BASE = "<?PHP echo URL::base(); ?>";
        // attempt to GET the new content
        $.get(BASE+'phonecalls/show/2',function(data) {
            $('#content').html(data);
        });

猜你在找的jQuery相关文章