【问题标题】:Add additional data to jQuery wrapped object data in $.ajax call在 $.ajax 调用中向 jQuery 包装的对象数据添加附加数据
【发布时间】:2013-12-04 06:05:15
【问题描述】:

我有这个工作代码:

jQuery.ajax({
    type: 'post',
    url: 'http://www.someurl.com/callback.php',
    dataType: 'json',
    data: jQuery(':input[name^="option"][type=\'checkbox\']:checked, :input[name^="option"][type=\'text\']'),

    complete: function (mydata) {
        //do something with it
    }
});

成功回发所有选中的复选框和所有文本框。但现在我也想在其中添加一些任意数据。但不确定如何格式化。基本上我想简单地添加我自己的名称=值对“test=1”,以便在回调中我像其他人一样看到它。但无论我尝试什么,我都看不到以它期望的格式获得正确的语法。不确定我是否应该将它添加到 jQuery() 包装内或外部。我尝试过序列化、encodeURIComponent、基本字符串“&test=1”

有什么想法吗?

【问题讨论】:

    标签: javascript ajax jquery


    【解决方案1】:

    最好的办法是在 AJAX 调用之外构建参数,如下所示:

    var params = jQuery(':input[name^="option"][type=\'checkbox\']:checked, :input[name^="option"][type=\'text\']');
    params.test = 1;
    params.test2 = 2;
    

    然后在您的 AJAX 调用中,只需使用:

    jQuery.ajax({
        type: 'post',
        url: 'http://www.someurl.com/callback.php',
        dataType: 'json',
        data: params,
    
        complete: function (mydata) {
            //do something with it
        }
    });
    

    编辑:通常在使用 jQuery 收集输入时,我倾向于使用 .each 函数,如下所示:

    var params = new Object();
    $.each('input[name^=option]', function() {
        if ((this.type === 'checkbox' && $(this).is(':checked')) || this.type === 'text' && this.value !== '') {
            params[this.name] = this.value;
        }
    });
    

    如果您希望添加参数,您可以在此之后或在创建新对象之后立即添加。

    【讨论】:

    • 修复了 POST 变量,但 test 和 test2 从未到达服务器。
    【解决方案2】:

    我忘了我之前问过这个。回答正确,所以我分享了链接:

    How can I pass form data AND my own variables via jQuery Ajax call?

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2015-11-14
      • 1970-01-01
      • 2020-05-05
      • 2021-06-14
      • 1970-01-01
      相关资源
      最近更新 更多