【问题标题】:How to communicate with the controller using AJAX in Laravel?如何在 Laravel 中使用 AJAX 与控制器通信?
【发布时间】:2015-10-13 07:35:59
【问题描述】:

我使用 CodeIgniter 已经一年多了(并且已经习惯了),然后发现它已经过时了,ellislab 已经取消了支持。我想尝试使用 Laravel 作为替代方案,尽管 CodeIgniter 仍然可以正常工作,但出于未来的目的,我不想落后。现在,有了 Laravel 的 MVC 框架,我可以轻松地从 CI 迁移我的一些项目。我遇到了 Laravel 的路由问题,因为 我无法与我的控制器通信。这是我的一些代码:

controller.php:

public function connect() {
    $this->load->model('home_model');
    if ($DBconnect=$this->home_model->checkConnection()) {
        echo json_encode(array(
            "success" => true,
            "db_connect" => $DBconnect
        ));
    } else {
        echo json_encode(array(
            "success" => false,
            "db_connect" => $DBconnect
        ));
    }
}

view.js:

    $("#connection").click(function(e) {
        e.preventDefault();
        show_loading();
        $.get('./home/connect', function(data) {
            hide_loading();
            Materialize.toast(data.db_connect, 4000, 'rounded green');
        }, "json");
    });

PS: 我是在使用 Laravel 的方式还是我仍然非常关注 CI?

【问题讨论】:

  • 你使用的是什么版本的 laravel?你需要学习如何在 laravel 中使用路由。
  • 我正在使用 4.2.11 @RomnickSusa,是的,这就是我来这里的原因:D
  • Laravel 4.2 对此有很好的文档。你打开这个laravel.com/docs/4.2/routing#basic-routing了吗?
  • 其实我正在读。
  • 试试我的答案。希望对您有所帮助。

标签: php ajax laravel


【解决方案1】:

这是我与控制器的连接方式

首先设置routes.php:

Route::controller('/','MyController');

在控制器app/controller/MyController.php(你需要创建一个):

<?php

class MyController extends BaseController {
    public function getJustASampleText(){
        echo "Hello World";
    }
    public function getJustASampleSmile(){
        echo ":D";
    }
    public function getConnect(){
        $var_value = "Hello world";
        return Response::json(array('var_name' => $var_value));
    }
}

然后你可以像这样调用那个函数

domain.com/just-a-sample-text

domain.com/just-a-sample-smile或者在你的情况下

$.get(`http://127.0.0.1/laravel/public/connect`,function(data){
    alert(data.var_name);
})

我们如何使用 Route::controller 方法。

【讨论】:

  • dash (-) 真的有必要吗?
  • 你的意思是这样吗? $.get('localhost/connect', function(data) {
  • 是的,不要忘记大写。您需要将函数命名为 method type + camel case name
  • 我试过$.get('http://127.0.0.1/laravel/public/connect', function(data) {,但它似乎没有从控制器获取任何数据。
  • Route::controller('/','Home');Route.php
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 2018-03-28
  • 2014-09-19
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
相关资源
最近更新 更多