我有一些代码调用称为 /partner/settings 的后端方法来执行以下两项任务之一:
- 如果 jQuery.load() 方法为 GET,则返回对话框内容并显示
- 如果这个 jQuery.load() 方法是 POST,它会传递表单数据,对其进行验证,然后将其保存到数据库中。
我遇到的问题是,当我调用应该导致 GET 操作的 jQuery.load() 时,它会提交一个 POST。我没有将任何 POST 数据传递给 load() 方法。事实上,第一次调用它时,它按预期使用了 GET。下次使用 POST 时调用它。
我尝试通过将 .load() 更改为 .get() 来解决此问题。它仍然以某种方式进行了 POST(我的调试代码告诉我它确实在调用 .get() 方法,但我的 Chrome 网络选项卡将其记录为 POST)
谢谢你尽你所能的帮助。
$(document).ready(function() {
showPartnerSettings = function(e) {
window.gEnvPath = envPath;
e.preventDefault();
console.log(e);
var post = (e.type == "click") ? false : true;
if($("#partner-settings-form").length == 0) {
var $dialogForm = $("<div />");
console.log('new dialog');
} else {
var $dialogForm = $("#partner-settings-form").unbind("submit");
console.log('existing dialog');
}
$dialogForm.attr("id", "partner-settings-form")
.append($loading.clone());
if(e.type == "submit") { . . . }
else //load new dialog form content
{
var partnerId = e.data.partnerId;
$dialogForm.load(window.gEnvPath + "/partner/settingsdialog?partnerid="+partnerId, function(){
$("#partner-settings-form").css("display", "block");
console.log($dialogForm);
$dialogForm.dialog({
title: "Partner Settings",
modal: false,
resizable: false,
width: 580, //CPB 04.11.13
position:['middle',130],
dialogClass: "partner-settings-class",
create: function() {
$("#add_postage").on("click", function(e){ . . . })
},
close : function(){
var dialogid=$(this).parent("div").attr("id");
$("#Tabs ul li."+dialogid).remove();
$(this).remove();
$("#alertmod").remove();
//$link.removeClass('preventclick');
}
})
.dialog("open")
.css("display", "block");
$(document).on("submit", ".sign_in_form", function(event) {
event.preventDefault();
return showPartnerSettings(event);
});
return false;
});
}
return false;
};