私のPOSTは次のようになります。
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が挿入されたときではなく、ページの読み込み時に発生しています。そのため、[送信]ボタンにクリック機能が割り当てられておらず、デフォルトの動作に基づいて動作しています。