Juliatzin
Juliatzin

Reputation: 19695

Update variable outside of Ajax Call

I have a variable settingId that determine if I will do a POST or a PUT Ajax Call: var settingId = form.data('setting');

        if ((typeof settingId === "undefined")){
            method = 'POST';
            url = '{{ url("/tournaments") }}' + '/' + tournamentId + '/categories/' + categoryId + '/settings';
        }else{
            method = 'PUT';
            url = '{{ url("/tournaments") }}' + '/' + tournamentId + '/categories/' + categoryId + '/settings/' + settingId ;
        }

It works great, but when I do a POST, I need to update this variable value, so that this same test gives me a PUT, and I can't do it.

Right now, I do it like that but obviously, it is not the right way:

form.data['setting'] = data.settingId;

My Form:

<form method="POST" action="http://laravel.dev/tournaments/3/categories/2/settings/11" accept-charset="UTF-8" class="form-settings" data-tournament="3" data-category="2" data-setting="11">

...

JS:

$('.save_category').on('click', function (e) {
        e.preventDefault();
        var inputData = $('.save_category').serialize();
        var form = $(this).parents('form:first');

        var tournamentId =   form.data('tournament');
        var categoryId =   form.data('category');
        var settingId =  form.data('setting');

        console.log(tournamentId);
        console.log(categoryId);
        console.log(settingId);


        $(this).find('i').removeClass();
        $(this).find('i').addClass('icon-spinner spinner position-left');
        $(this).prop( "disabled", true );
        var panel = $(this).closest('.panel');
        var method = null;
        var url = null;

        if ((typeof settingId === "undefined")){
            method = 'POST';
            url = '{{ url("/tournaments") }}' + '/' + tournamentId + '/categories/' + categoryId + '/settings';
        }else{
            method = 'PUT';
            url = '{{ url("/tournaments") }}' + '/' + tournamentId + '/categories/' + categoryId + '/settings/' + settingId ;
        }
        $.ajax(
                {
                    type: method,
                    url: url,
                    data: inputData,
                    success: function (data) {
                        if (data != null && data.status == 'success') {
                            noty({
                                layout: 'topRight',
                                type: 'success',
                                width: 200,
                                dismissQueue: true,
                                timeout: 3000,
                                text: data.msg
                            });
                            // Change warning icon to success
                            panel.find('.status-icon').removeClass().addClass('glyphicon glyphicon-ok text-success status-icon');
                            console.log(data);
                            form.data['setting'] = data.settingId;

                        } else {
                            noty({
                                layout: 'topRight',
                                type: 'error',
                                width: 200,
                                dismissQueue: true,
                                timeout: 3000,
                                text: data.msg
                            });
                        }
                        $('.save_category').prop( "disabled", false );
                        $('.save_category').find('i').removeClass('icon-spinner spinner position-left');




                    },
                    error: function (data) {
                        noty({
                            layout: 'topRight',
                            type: 'error',
                            width: 200,
                            dismissQueue: true,
                            timeout: 3000,
                            text: data.msg
                        });
                        $('.save_category').prop( "disabled", false );
                        $('.save_category').find('i').removeClass('icon-spinner spinner position-left');
                    }

                }
        )

    });

Any Idea????

Upvotes: 0

Views: 49

Answers (2)

Ralph John Galindo
Ralph John Galindo

Reputation: 1190

Try

$(form).data( 'setting' , data.settingId );

Upvotes: 1

Torsten Barthel
Torsten Barthel

Reputation: 3458

Just do it with jQuery:

$('form .form-settings').attr('data-setting', data.settingId);

Upvotes: 1

Related Questions