【问题标题】:How to call Laravel controller function from JavaScript如何从 JavaScript 调用 Laravel 控制器函数
【发布时间】:2017-07-25 23:42:38
【问题描述】:

如何使用 JavaScript 调用控制器函数!?

控制器:

public function archive($id)
{
  $article = Article::find($id);

  $article->public = 0;
  $article->archive = 1;

  $article->save();
}

路线:

Route::post('/archive/{id}', 'HomeController@archive');

如果有任何工作选项,我将不胜感激。谢谢!

【问题讨论】:

  • 使用 ajax 调用访问您的休息路线。
  • 如果我尝试使用 ajax 调用,我会收到错误 405(不允许使用方法)。在数据中我也发送 csrf_token
  • 您可以将 CSRF 令牌与您的 AJAX 请求一起发送。阅读所有相关信息:laravel.com/docs/5.4/csrf#csrf-x-csrf-token
  • 我在请求中发送 csrf 令牌,但在这种情况下没有任何反应。我没有收到任何错误,并且函数调用不起作用

标签: javascript php function laravel-5 controller


【解决方案1】:

如果您还想通过 api 访问控制器,我相信您还需要为控制器创建响应。

// put this above your class name
use Illuminate\Http\Request;

public function archive(Request $request, $id)
{
  $article = Article::find($id);

  $article->public = 0;
  $article->archive = 1;

  $article->save();

  return response()->json([
    'success' => 'yes',
  ]);
}

如果您使用 jQuery,请使用 jQuery ajax

$.post('/archive/' + {your_id}, function(response) {
    // handle your response here
    console.log(response);
})

【讨论】:

  • 作为回应我得到这个:Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  • 您能否检查一下您的数据库中是否存在 your_id。或者查看您的错误日志以获取更多详细错误信息。
  • 是的,它存在。我用这个构造来测试$.post('/archive/2',,但错误是一样的
  • 也检查我的编辑,也许问题是你没有回应?你能检查一下你的error_log吗?
  • 请告诉我在哪里可以查看error_log?我是 laravel 的新手。如果我使用 Route::get....window.location... 它对我有用,但我需要更新而不刷新页面
猜你喜欢
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2019-04-12
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
相关资源
最近更新 更多