我的帖子看起来像这样:
var $postResults = $.ajax({
url: "product/create/setting",
type: "POST",
async: false,
data: { KEY: "datasource.name." + dsname, CLASS: dsclass, URL: dsurl },
complete : function (xhr, textStatus) {
console.log(xhr.responseText);
return xhr.responseText;
}
});
return $postResults.responseText;
但是,当我监视实际发生的情况时,它会在标题中显示一个 GET,其 URL 为“/”而不是“product/create/setting”。
我把它展示给一位同事,他们说“看起来提交按钮正在拒绝你的现实并替换它自己的提交功能。”
有关如何更好地解决此问题的任何想法?
编辑
这是完整的功能(在 $(document).ready 里面)
function createEnvironmentPrep() {
$('#createEnvironment').click(function () {
$('div.zForms').html('');
$('<div class="home-panel">' +
'<h2 class="home-panel-header">Create New Environment</h2>' +
'<form id="submitNewEnvironment">' +
'<label class="createlabel" for="envname">Name</label>' +
'<input id="envname" name="envname" type="text" size="25" required /><br />' +
'<label class="createlabel" for="envpath">Path</label>' +
'<input id="envpath" name="envpath" type="text" size="75" /><br />' +
'<input id="envsubmit" name="envsubmit" type="submit" class="submit" />' +
'</form>' +
'</div>' +
'<div id="returnmsg"></div>').appendTo('div.zForms');
$('#envsubmit').click(function(e) {
e.preventDefault();
var $inputs = $('#submitNewEnvironment :input');
var values = {};
$inputs.each(function() {
console.log($(this));
values[this.name] = $(this).val();
});
var reqStatus = createEnvironment(values["envname"], values["envpath"]);
if ( reqStatus === "Setting Updated" ) {
window.location.reload();
} else {
$("#returnmsg")
.text(reqStatus)
.css("display", "block");
return this.revert;
}
});
});
function createEnvironment(envname, envpath) {
var $postResults = $.ajax({
url: "zforms/create/setting",
type: "POST",
async: false,
data: { KEY: "report.environment." + envname, NAME: envname, PATH: envpath },
complete : function (xhr, textStatus) {
console.log(xhr.responseText);
return xhr.responseText;
}
});
return $postResults.responseText;
}
}
据我所知,单击函数对 $('#envsubmit') 的内部分配是在页面加载时发生的,而不是在单击“创建环境”按钮并插入 HTML 时发生的。因此,没有为提交按钮分配单击功能,并且它的行为不符合默认行为。