Sachith Muhandiram
Sachith Muhandiram

Reputation: 2972

Ajax form data not saved in database

I am trying to save user input into database using Ajax in Laravel-5.2.

This is my route.php

Route::get('xxxxx/{task_id?}',function($task_id){
$task = App\XXXXX::find($task_id);

return response()->json($task);
});

    Route::put('xxxxx/{task_id?}',function(Request $request,$task_id){
        $task = App\XXXXX::find($task_id);

        $task->Name = $request->Name;//
        $task->Email = $request->Email;
        $task->Telephone = $request->Telephone;

        $task->save();

        return response()->json($task);
    });

In my view, the save button is used as.

<div class="modal-footer">
   <button type="button" class="btn btn-primary" id="btn-save" value="update">Save changes</button>
       <input type="hidden" id="task_id" name="task_id" value="0">
</div>

my js file created using this tutorial..
I am getting the popup, Save button is not working.
What is the wrong here? I m new for Ajax.
Thanks in advance.

Upvotes: 0

Views: 505

Answers (1)

Dipankar Samanta
Dipankar Samanta

Reputation: 21

This is route.php

Route::match(['get','post'], 'my/save-data','MyController@SaveData');

This is your html:

Save changes

This is your Controller file: MyController.php

public function SaveData( Request $request ) { $input = $request->all();

    try{

        // You can now use the Subscribe model without its namespace
        // as you referenced it by its namespace in a use statement.
        $subscribe = new Subscribe();

        // If you want to use a class that is not referenced in a use
        // statement then you must reference it by its full namespace.
        $otherModel = new \App\Models\Other\Namespace\OtherModel();

        $otherModel = $input['Name'];
        $otherModel = $input['Email'];
        $otherModel = $input['Telephone'];

        // save
        $otherModel->save();           

    }
    catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e)
    {
        \Log::error( $e->getMessage(), $context );              
    }
    catch (Exception $e){
        \Log::error( $e->getMessage(), $context);
    }   

    return response()->json( ['status'=>'success', 'message'=>'Completed successfully'] );
}

This is your Js file:save.js

function save() { getData = { name: "value", // from get eliment
email: "value", // from get eliment telephone: "value" // from get eliment };

$.ajax({
    type: 'post',           // POST Request
    url: 'localhost/my/save-data',   // localhost/my/save-data         // Url of the Route (in this case user/save not only save)
    data: getData,         // Serialized Data

    beforeSend: function (xhr) {
        // Function needed from Laravel because of the CSRF Middleware
        var token = $('meta[name="csrf_token"]').attr('content');

        if (token) {
            return xhr.setRequestHeader('X-CSRF-TOKEN', token);
        }
    },
    success: function (data) {
        // Successfuly called the Controler

        // Check if the logic was successful or not
        if (data.status == 'success') {
            console.log('alles ok');
        } else {
            console.log(data.msg);
        }
    },
    error: function (data) {
        // Error while calling the controller (HTTP Response Code different as 200 OK
        console.log('Error:', data);
    }
});

}

Upvotes: 1

Related Questions