Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改自动完成';数据';没有这么多重复代码的参数?_Javascript_Jquery_Refactoring_Jquery Autocomplete - Fatal编程技术网

Javascript 如何更改自动完成';数据';没有这么多重复代码的参数?

Javascript 如何更改自动完成';数据';没有这么多重复代码的参数?,javascript,jquery,refactoring,jquery-autocomplete,Javascript,Jquery,Refactoring,Jquery Autocomplete,我试图在我的数据参数中为自动完成发送不同的值,具体取决于先前设置的全局变量lookupType 但是,所有其他代码都会重复,即使只有数据部分不同 如何减少冗余代码 在一种情况下,数据部分如下: data: { type: "full", location: "local", name: request.term }, 而在另一种情况下是这样的: data: { append: "no", d

我试图在我的
数据
参数中为自动完成发送不同的值,具体取决于先前设置的全局变量
lookupType

但是,所有其他代码都会重复,即使只有
数据
部分不同

如何减少冗余代码

在一种情况下,
数据
部分如下:

    data: {
        type: "full",
        location: "local",
        name: request.term
    },
而在另一种情况下是这样的:

    data: {
        append: "no",
        doPreprocess: true,
        name: request.term,
        maxResults: 1000
    },
完整代码如下:

    $( "#lookup" ).autocomplete({
    if($("#hiddenLookupType").val() == "order")
    {

        source: function( request, response ) {
            $.ajax({
                url: lookupUrl,
                dataType: "jsonp",
                data: {
                    type: "full",
                    location: "local",
                    name: request.term
                },
                success: function( data ) {
                // do something
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    }
    else if($("#hiddenLookupType").val() == "inventory")
    {

        source: function( request, response ) {
            $.ajax({
                url: lookupUrl,
                dataType: "jsonp",
                data: {
                    append: "no",
                    doPreprocess: true,
                    name: request.term,
                    maxResults: 1000
                },
                success: function( data ) {
                // do something
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    }
});
而不是:

 data: {
                    type: "full",
                    location: "local",
                    name: request.term
                },
拥有:

data: GetData(this),


 function GetData(el)
 {
    ..Logic Here
 }
//calling it:
var parameters =    {
        type: "full",
        location: "local",
        name: request.term
    }

test(parameters);

//the method
function test(dataList){ 
 $( "#lookup" ).autocomplete({
    if($("#hiddenLookupType").val() == "order")
    {

        source: function( request, response ) {
            $.ajax({
                url: lookupUrl,
                dataType: "jsonp",
                data: dataList,
                success: function( data ) {
                // do something
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    }
    else if($("#hiddenLookupType").val() == "inventory")
    {

        source: function( request, response ) {
            $.ajax({
                url: lookupUrl,
                dataType: "jsonp",
                data: {
                    append: "no",
                    doPreprocess: true,
                    name: request.term,
                    maxResults: 1000
                },
                success: function( data ) {
                // do something
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    }
});
}