使用AJAX调用不带数据或表格IN Laravel 7的PHP函数

问题描述 投票:0回答:1

您好,友好的程序员!

我现在处于这种情况。我正在使用Laravel 7,我的视图有2个按钮。 “开始”和“停止”在单击“开始”时,我想在MySQL表中创建一行,其中包含当前登录用户的user_id和用户按下“开始”的时间戳。您可能已经知道下一步是什么:单击“停止”时,我想创建一个包含user_id和用户按下“停止”的时间戳的行]

我只有相应的PHP函数的一条路由:Route::post('/home', 'HomeController@findAction')->name('home.find');

该函数如下所示:

    public function findAction(\Illuminate\Http\Request $request)
    {
        if ($request->has('start-btn'))
        {
            return $this->dispatch(new \App\Jobs\WorkStart($request));
        }
        else if ($request->has('stop-btn'))
        {
            return $this->dispatch(new \App\Jobs\WorkStop($request));
        }
        else if ($request->has('pause-btn'))
        {
            return $this->dispatch(new \App\Jobs\WorkPause($request));
        }

        return 'no action found';
    } 

其想法是,取决于单击哪个按钮,将执行特定作业。这些工作做得很好。我使用一种表单尝试了同样的事情,该表单导致创建了我想要的行。缺点是,每当我单击一个按钮时,整个站点都变成白色,因此我必须单击返回才能继续。 (我猜是因为PHP发布的性质?)

乔布斯看起来像这样:

class WorkStart implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        try
        {
            $id = DB::table('times')->insertGetId(
                ['user_id' => 1, 'clocked_in' => now()]
            );
        }
        catch(Exception $e)
        {
            echo "crap";
        }
    }
}

以及我视图中的按钮:

                        <div id="start">
                            @csrf
                            <button
                                class="btn btn-primary btn-lg"
                                type="button"
                                id="start-btn"
                                name="start-btn"
                                value="start"
                            >start</button>
                        </div>

[对不起,如果这是一个我自己能解决的常见问题,但是我是PHP尤其是Laravel 7的新手,而且我以前从未使用过AJAX,也找不到类似问题的解决方案。持续数天。

所以我的问题是:我可以使用AJAX为这些按钮提供所需的功能,而无需重新加载页面,因此没有“表单”,也没有向JQuery函数提供数据,如下所示:

jQuery(document).ready(function(){
    jQuery('#start-btn').click(function(e){
        e.preventDefault();
        console.log("flag");

        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

        jQuery.ajax({
            type: 'post',
            url: "/home",
            success: function(result){
                alert("Welcome!");
                console.log("flag2");
            }});
    });

感谢您的帮助!

您好,友好的程序员!我现在处于这种情况。我正在使用Laravel 7,我的视图有2个按钮。 “开始”和“停止”单击“开始”后,我想在我的MySQL表中创建一行...

php ajax laravel
1个回答
0
投票

如果要使用ajax提交不带<form>标记的表单,请尝试此。

© www.soinside.com 2019 - 2024. All rights reserved.