我有以下代码:
function submitHandler(dialog) {
dialog.$submits.disableBt();
dialog.$message.addMessage("loading", "<li>Contacting Server, please wait ...</li>");
$.ajax({
url: href,
dataType: 'json',
type: 'POST',
data: dialog.$form.serializeArray()
})
.done(onSubmitDone())
.fail(onSubmitFail());
}
该函数有一个对话框参数,它是一个如下所示的对象:
{
$modal: $modal,
$form: $modal.find('.form'),
$message: $modal.find('.message'),
$submits: $modal.find('.submit-button'),
href: $form.attr('data-href')
};
我需要将对话框对象发送到 onSubmitDone 和 onSubmitFail 函数。以前我没有使用对象 保存 $modal、$form 等,并且变量都可用于包含在外部函数内的所有函数
两个问题:
将事物作为对象的一部分传递是否明智,或者我应该在外部函数的顶部声明这些变量。
如果我确实传递该对象,我如何将其传递给以下对象:
function onSubmitDone(json) {
json = json || {};
if (json.Success) {
switch (action) {
我知道我的 json 对象已传递,但我如何也传递对话框对象?
最佳答案
将对话框参数传递给 ajax 回调的一种方法是将其包含在回调定义中,如下所示:
function submitHandler(dialog) {
dialog.$submits.disableBt();
dialog.$message.addMessage("loading", "<li>Contacting Server, please wait ...</li>");
$.ajax({
url: href,
dataType: 'json',
type: 'POST',
data: dialog.$form.serializeArray(),
success: function(data, textStatus, jqXHR) {
onSubmitDone(data, textStatus, jqXHR, dialog);
},
error: function(jqXHR, textStatus, errorThrown) {
onSubmitFail(jqXHR, textStatus, errorThrown, dialog);
}
});
}
我明确了所有回调参数(data、textStatus、jqXHR、errorThrown),但如果您不想,则无需使用所有这些参数。
关于javascript - 除了从 ajax 函数传递 json 之外,如何传递对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765968/