我有这个函数,我试图在不进行页面加载的情况下重定向到新页面,每次调用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
等值创建一个新记录。