0

いくつかの場所で ajax メソッドを呼び出す必要があります。そのため、別のメソッドを作成してコードを最小限に抑えたいと考えています。直接使用すると、完璧に機能します。しかし、私が分離すると、それは機能しません。

    data: columns[5],
    type: 'autocomplete',   
    options: { items: 100 },
    source: function (query, process) {    
            $.ajax({
            url: "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val(),
            type: "GET",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: {
                      query: query
                   },
            success: function (response) {
                        process(response.d);
                     }
             });
          },
          strict: true
}

このように呼び出しても機能しません。それは言うMicrosoft JScript runtime error: 'query' is undefined、それを修正する方法は?

{
    data: columns[4],
    type: 'autocomplete', 
    options: { items: 100 },
    source: callAutoCompleteAjaxMethod(query, process, "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val()),
    strict: true

 },

callAutoCompleteAjaxMethod = function (query, process, url) {
                 $.ajax({
                    url:url,
                    type: "GET",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: {
                        query: query
                    },
                    success: function (response) {
                        process(response.d);
                    }
                });
            },
4

2 に答える 2

2

あなたが呼ぶ

source: callAutoCompleteAjaxMethod(query, ...

しかし、「クエリ」に値を与えたことはありません。値を与えると機能します。

于 2013-06-10T20:54:22.690 に答える
1

関数を source プロパティに割り当てる代わりに呼び出しています。そして現時点では、変数queryは定義されていません。

プラグインが後で呼び出すことができるように、関数を割り当てる必要があります。

source: function (query, process) {
    callAutoCompleteAjaxMethod(
        query, 
        process, 
        "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val()
    );
}

$value(どこかで定義されていることを願っています)

関数参照の後の括弧 ( ()) は、常に関数をすぐに呼び出します。関数への参照を渡したい場合は、その後に括弧を付けません。

于 2013-06-10T20:57:14.427 に答える