如果ajax调用成功返回,我想在当前url的末尾附加一个param。在这种情况下,我们可以找回已经持久存入数据库的对象的标识符,然后将此标识符附加到url。
如果取消注释行curationNotes
,则问题data
window.history.pushState({}, null, newHref);
丢失了。这意味着我们无法在控制器中获得“params.curationNotes”。当我们尝试在控制器内部解析时,params.curationNotes
是表单上用户提供的值的映射,为null
。
以下是我正在处理的代码段。
$('#btnSave').on("click", function(event) {
if ($('#curationNotesForm')[0].checkValidity()) {
var curationNotes = buildCurationNotesTC();
"use strict";
event.preventDefault();
$.ajax({
dataType: "text",
type: "POST",
url: $.jummp.createLink("curationNotes", "doAddOrUpdate"),
cache: true,
data: {
curationNotes: curationNotes,
model: "${id}"
},
processData: true,
async: true,
beforeSend: function() {
$('#txtStatus').text("The curation notes are being saved. Please wait...");
},
success: function(response) {
var response = JSON.parse(response);
var href = window.location.href;
if (href.indexOf("&cnId=") < 0) {
var newHref = href + "&cnId=" + response['cnId'];
//window.history.pushState({}, null, newHref);
}
$('#txtStatus').text(response['message']);
},
error: function(jqXHR, textStatus, errorThrown) {
// TODO: the error message doesn't show properly
$('#txtStatus').text("Error: ", jqXHR.responseText + textStatus + errorThrown + JSON.stringify(jqXHR));
}
});
} else {
$('#txtStatus').text("Please check required fields and click Save button again...");
}
});
如果我对此行window.history.pushState({}, null, newHref);
发表评论,则代码工作正常。
注意:此代码段在Linux上的任何Web浏览器中都能正常运行,但无法在Windows 10的任何Web浏览器中运行。这对我来说实际上很荒谬。
你有没有遇到过这个问题的经历?