【问题标题】:Ajax Call Not Making Calls To Server LaravelAjax 调用不调用服务器 Laravel
【发布时间】:2020-04-19 05:56:23
【问题描述】:

我正在尝试使用第三方程序发出请求,但它不起作用,谁能告诉我我做错了什么?根本没有发送响应。我尝试按顺序对依赖项进行排序,将脚本放在顶部,将代码放在表单之后,但它只是没有通过控制台中的 XHR 进行调用。

控制器:

class UserController extends Controller
{
    public function index(Request $request)
    {
        $search = request('name');
        return User::where('name', 'LIKE', "$search%")
            ->take(5)
            ->pluck('name');
    }
}

路线:

Route::get('/api/users', 'Api\UserController@index');

脚本:

<script>
        $('#body').atwho({
            at: "@",
            delay: 500,
            callbacks: {
                remoteFilter: function (query, callback) {
                    //$.getJSON('/api/users', { name: query }, function (usernames) {
                    //    console.log('hey');
                    //    callback(usernames);
                    //});
                    $.ajax({
                        headers: {
                            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                        },
                        url: '/api/users',
                        type: 'GET',
                        dataType: 'json',
                        data: {
                            name: query,
                            _token: {{csrf_token()}}
                        },
                        success: function (usernames) {
                            callback(usernames);
                            console.log('hey');
                        },
                        error: function () {
                            console.log('error');
                        }
                    });
                }
            }
        });
    </script>

这里很好用

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="/css/jquery.atwho.css">
</head>
<body>
    <textarea type="" id="inputor"></textarea>

</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.js"></script>
<script src="/js/jquery.caret.js"></script>
<script src="/js/jquery.atwho.js"></script>
<script>
    $('#inputor').atwho({
        at:"@",
        data: ['Peter', 'Tom', 'Anne']
    });
</script>
</html>

【问题讨论】:

  • 你的 laravel 项目中是否正确包含 script 文件和 css 文件?
  • 我想是的,我已经从我的文件夹中按照需要的顺序调用了它(即在 Atwho.js 之前需要 Caret.js)。我把它放在顶部,也放在底部,我不知道出了什么问题。我觉得我在调用它就像我在研究项目中调用它一样。
  • 请先检查inspect 并尝试找出问题所在
  • 我也这样做了,A.A Noman

标签: jquery ajax laravel at.js


【解决方案1】:

你必须使用url 看起来像这样。

url: "{{url('')}}/api/users,
type: 'POST',

你的路线应该放在route\api.php。你的路线应该是这样的

Route::post('/users',       'ApiController@index');

然后在您的 ApiController 中编写此代码

class ApiController extends Controller{

    public function index(Request $request){

        $search = request('name');

        return User::where('name', 'LIKE', "$search%")->take(5)->pluck('name');

    }
 }

【讨论】:

  • 所以调用在没有库的情况下工作,现在我必须让它与库一起工作。
  • 不是...我认为是因为我在代码中放错了,但我不知道它是什么
  • 我进行了编辑,它适用于常规 HTML,但不适用于 Laravel。控制台中没有记录任何内容。
【解决方案2】:

我不得不从 app.blade.php 文件中的 app.js 中删除“延迟”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多