【问题标题】:How Can I Use Ajax With Laravel?如何在 Laravel 中使用 Ajax?
【发布时间】:2019-06-20 02:23:15
【问题描述】:

我的控制器中有以下功能。

public function index()
{
    $number = DB::table('counters')->first();

    return view('app', compact('number'));
}

public function count()
{
    DB::table('counters')->where('id', 1)->increment('number');
}

路线

Route::get('/', 'CounterController@index');
Route::get('/count', 'CounterController@count');

查看

<a href="{{action('CounterController@count')}}">
    <div class="button lighter-blue" id="form-button-1" data-attribute="1">
    Ja
    </div>
</a>

count 函数有效,但我想用 Ajax 来做,因为我的视图中有数字。

<h3>Nummer: {{ $number->number }}</h3>

我想点击按钮,然后数字增加,它直接显示给我。我该怎么做?

【问题讨论】:

  • 我不明白,我尝试了 3 个小时,但没有任何效果:(
  • 只有当我刷新页面时它才会向我显示新号码:/但我想要在点击按钮后完全正确

标签: ajax laravel laravel-blade


【解决方案1】:

我在这里没有看到任何异常 - 看起来只是一个标准的 ajax 响应。那里有很多很好的教程,例如this one

但是,要回答您的问题,首先将按钮设为按钮,以便 jQuery / js 可以接受该操作,而不必刷新页面。比如:

<button id = 'getCount'>Get Count</button>

这将替换上面的整个锚链接。

然后,用 id 在 js 中捕获它:

$("#getCount").on('click', function(){ 
    // AJAX HERE
}

然后您调用以获取上述 onClick 中的计数(可以简化更多,但这显示了一个清晰的 ajax 方法 - 您需要调整您的代码):

$.ajax({
      url: APP_URL + "/count" ,
      type: "GET",
       success: function (countResult) {
          showResult(countResult)
       },
       error: function () {
         alert ('Problem');
       }
  });

为了清楚起见,我已经分解了显示。你可以给&lt;h3&gt;添加一个id来覆盖:

<h3 id='count'>Nummer: {{$number->number}}</h3>

那么,你的 show 方法就可以直接写在 count 里了:

function showResult(count){
    $("#count").text('Nummer '+count);
}

您需要进行调整,但这会让您到达您需要的位置。看看上面的教程,这将帮助您了解这是怎么回事,您最终可以简化它。

【讨论】:

  • 但是如果我用 javascript 来做,我不能增加我数据库中的数字?
  • 为什么不呢?当 ajax 访问您的控制器时,它会增加数据库中的计数。抱歉,我应该添加 - 您需要 return 增加到 ajax 调用的新值。因此,当数据库更新时,在控制器中获取新计数并将该值返回给 ajax,以便 ajax 成功函数中的 countResult 变量具有新的递增计数。
猜你喜欢
  • 2017-10-23
  • 2013-07-05
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 2013-07-09
  • 1970-01-01
相关资源
最近更新 更多