动态包含和删除$ .ajax属性

时间:2016-07-19 22:38:57

标签: jquery ajax parameter-passing optional-parameters

有任何方法可以编辑$ .ajax功能,包括所有权"数据",当她收到任何价值时,并删除她,当有'不是吗?我的意思是,动态? e.g:

当变量有值时:

var parametro = "{id: "1"}";

      $.ajax({
            type: "POST",
            url: url,
            data: parametro ,
            async: async,
    ...

如果没有变量,或者对她没有任何价值:

var parametro = "";

     $.ajax({
            type: "POST",
            url: url,
            async: async,
    ...

所以,我的想法是这样的:

 $.ajax({
            type: "POST",
            url: url,
            if(parametro)
            {
               data: parametro,
            },           
            async: async,
    ...

我尝试了其他类似的东西:

data: undefined
data: ""
data: null 

但似乎没有任何效果。发送空数据的唯一方法是#34;属性,它是完全删除它。因此,除了创建两个不同的功能,一个带有"数据"财产,没有她的另一个,有任何解决方案吗?

谢谢大家的关注。

3 个答案:

答案 0 :(得分:1)

因为它们都是对象,所以可以使用jQuery.extend()来扩展选项对象。

像这样:

var parametro = {
        id: "1"
    };

var defaults = {
        type: "POST",
        url: url,
        async: async,
        ...
    };

var options = $.extend(defaults, parametro);

$.ajax(options);

链接:

https://api.jquery.com/jquery.extend/

答案 1 :(得分:0)

据我所知 我建议将if条件放在$.ajax之外,例如

if(parametro){
  $.ajax({
        type: "POST",
        url: url,
        data: parametro ,
        async: async,
        ...
        });
}else{
   $.ajax({
        type: "POST",
        url: url,
        async: async,
  ...
}

答案 2 :(得分:0)

试试这种方式,

if(parametro)
   {
           $.ajax({
            type: "POST",
            url: url,
            data: parametro,           
            async: false,
           });
}

如果没有数据则不需要进行ajax调用,我认为。