javascript - 除了从 ajax 函数传递 json 之外,如何传递对象?

标签 javascript jquery

我有以下代码:

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/

相关文章:

javascript - 我如何捕获类型为 "document/html"的请求中的错误

javascript - 为什么这个 Canvas 动画在使用 ngRoute 第二次加载时挂起?

javascript - string.replace() 与 global (g) 不以奇怪的方式工作

javascript - 类型错误 : enterPage is undefined in OnsenUI 2 React navigator

javascript - offline.js 中允许服务器响应的更改时间

java - Request Dispatcher 导致 jQuery 的 $.get 提醒页面文本

javascript - 选择不适用于模态的选项

javascript - 我们还需要在 JavaScript 中检查不同的浏览器类型吗?

javascript - 如何通过单击超链接来选中/取消选中复选框?

jquery - History.js 无限事件循环