window.history.pushState正在递增

时间:2020-09-09 15:29:57

标签: javascript jquery

我有这个函数,我试图在不进行页面加载的情况下重定向到新页面,每次调用saveOnChnage()后,该值都作为新条目(如1,12,123,1234等)保存到数据库中,依此类推... 使用window.location.href可以按预期工作,它将加载到/diagnosis/edit/'+val,其中val将从输入字段中更改,并且它将在ID中更新。

但是当使用window.history.pushState而不是更新创建的ID时,它会使用值创建一个新ID。

function saveOnChange(val, type) {
            var diagnosis_id = $('#diagnosis_id').val();
            console.log(val + " : " + type + " : " + diagnosis_id);
            $.post('/diagnosis/saveOnChange', {
                '_token': '{{ csrf_token() }}',
                'diagnosis_id': diagnosis_id,
                'value': val,
                'type': type
            }, function(success) {
                console.log(success);
                if (success.redirect) {
                    //window.location.href = '/diagnosis/edit/' + success.id;

                    window.history.pushState(type, 'Title', '/diagnosis/edit/'+val);
                   
                }
            });
        }

调用saveOnChange()的函数

    wo_input.oninput = function() {
        if (wo_input.value) {
            if (wo_input.value.length > 0) {
                setTimeout(function() {
                saveOnChange(wo_input.value, 'wo_number');
                    }, 4000)
            } else { }
        } else { }
    }  

HTML

 <input type="text" name="wo_number" id="wo_input" />

关于如何在不创建新ID的情况下使用window.history.pushState更新值的任何想法。

例如:/diagnosis/edit/123,其中123是ID。使用'window.location.href'时,它会转到/diagnosis/edit/123,输入值时,它将更新123。

但是当使用window.history.pushState时,会在每个键输入上为/diagnosis/edit/123/diagnosis/edit/124/diagnosis/edit/125等值创建一个新记录。

0 个答案:

没有答案
相关问题