【问题标题】:Ajax call in laravel - append data in divlaravel 中的 Ajax 调用 - 在 div 中追加数据
【发布时间】:2013-11-14 23:10:47
【问题描述】:

我是 Laravel 世界的新手,但我需要了解并清楚自己的基本知识。所以我有一个问题。我想对控制器进行 ajax 调用,并在视图中的现有 div 元素中返回和打印数据。视图由另一个控制器呈现。基本上,我想在用户等待加载数据时显示加载圈。这是代码:

routes.php

Route::get('/members', "MembersController@index");
Route::get('/members/show/{provider}', 'AjaxController@main');

AjaxController.php

class AjaxController extends BaseController
{
    public function main($provider)
    {
        if($provider == 'test')
        {
            return "this is test";
        }

    }
}

在视图中,我有一个调用 ajax 的链接和一个空 div。 Ajax 调用工作得很好,但在从 MemberController 呈现的视图中显示“这是测试”,laravel 会打开带有 url “www.domain.com/members/show/test”的新页面,然后打印“这是测试”。我不想那样,我只想直接在 div 中加载返回日期。我该如何解决?

【问题讨论】:

  • 我们需要查看 JS 来确定,但我敢打赌问题出在 JavaScript 方面。 Laravel 只返回数据,它是客户端决定打开一个新窗口或重定向页面。

标签: php jquery ajax laravel


【解决方案1】:

你最好返回一个 HTTP Response():

class AjaxController extends BaseController
{
    public function main($provider)
    {
        if($provider == 'test')
        {
            return Response::json(array('success' => true, 'message' => 'this is test'));
        }

    }
}

【讨论】:

    【解决方案2】:

    由于您使用链接调用 AJAX 调用,我认为您没有关闭链接的默认行为。

    通常我会使用 JQuery 来解决这个问题。

    $('#element-to-invoke-ajax').click(function(event){
          event.preventDefault();
    
          $.ajax({
             url : 'members/show/test',
             ....
          });
    });
    

    【讨论】:

      【解决方案3】:

      我不知道怎么做,但现在它可以正常工作,没有任何变化。也许我的 IDE 没有上传所有文件,因为我在远程服务器上开发...有线 :) 但是谢谢大家 :)

      【讨论】:

        猜你喜欢
        • 2021-09-04
        • 2018-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-11
        • 1970-01-01
        • 2018-03-21
        • 1970-01-01
        相关资源
        最近更新 更多