jQuery.ajax()并发送布尔请求参数

$.ajax({
  url : uri,
  type : 'post',
  data : {someBooleanVar1: false, subVar: {someBooleanVar2: true}}
});

问题是,在服务器上someBooleanVar1和someBooleanVar2将被接收为字符串“false”和“true”,但不是“0”和“1”。 有没有办法自动将布尔参数转换为“1”和“0”?


有一个固定版本的@jcubic答案:

function convertBoolToNum(obj) {
    $.each(obj, function(i) {
        if (typeof obj[i] == 'object') {
            convertBoolToNum(this);
        }
        else if (typeof obj[i] == 'boolean') {
            obj[i] = Number(obj[i]);
        }
    });
}

$.ajax = (function($ajax) {
  return function(options) {
    convertBoolToNum(options.data);
    return $ajax(options);
  };
})($.ajax);

试试这个,它应该自动将布尔值转换为数据选项中的数字。

$.ajax = (function($ajax) {
  return function(options) {
    if (options.data != undefined) {
       for (var i in options.data) {
          if (options.data.hasOwnProperty(i) && 
              (typeof options.data[i] == "boolean")) {
            options.data[i] = Number(options.data[i]);
          }
       }
    }           
    return $ajax(options);
  };
})($.ajax);

我知道这篇文章有点旧,但我仍然想传递这些信息^^我把vars传给php,

filter_var($var, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);

像这样,我把字符串转换为布尔值true=1false= false,因为字符串在php中是空的

也许我读错了问题。 但这是我理解:)用上面的代码你可以轻松地构建一个函数,并添加更多的过滤器,让一切工作,因为你想:)

链接地址: http://www.djcxy.com/p/50707.html

上一篇: jQuery.ajax() and sending boolean request arguments

下一篇: Export certificate in windows store to a p12 file using Java