在$ .ajax调用中向jQuery包装对象数据添加其他数据

时间:2013-12-03 15:45:23

标签: javascript ajax jquery

我有这个工作代码:

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”

有什么想法吗?

2 个答案:

答案 0 :(得分: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;
    }
});

然后,如果你想添加参数,你可以在此之后或者在创建新对象之后这样做。

答案 1 :(得分:1)

我忘了以前问过这件事。它被正确回答所以我正在分享链接:

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