0

我有以下似乎不起作用的脚本。aspx 页面返回的 json 类似于下面脚本中的 json 已被注释掉。如果我将该 json 作为数组直接粘贴到源中,它会完美运行。

但是,一旦我尝试使用下面的脚本,我就没有收到任何错误消息或任何东西,当我在自动完成字段中键入时没有任何反应。

$(document).ready(function(){
    $('#button').click(function() {
        alert($("#txtAllowSearchID").val()); 
    }); 

    //var $local_source = [ {id:0,value:"c++"}, {id:1,value:"java"}, {id:2,value:"php"}, {id:3,value:"coldfusion"}, {id:4,value:"javascript"}, {id:5,value:"asp"}, {id:6,value:"ruby"} ]; 

    $("#txtAllowSearch").autocomplete({
        source: function(request, response) {
            $.ajax({
                type: "POST",
                url: "test_array.aspx",
                data: "{'prefixText': '" + $('#txtAllowSearch').val() + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data) {
                    response(data.d);
                },
                failure: function(errMsg) {
                    $('#errMessage').text(errMsg);
                }
            });
        },
        select: function (event, ui) {
            $("#txtAllowSearch").val(ui.item.value); // display the selected text
            $("#txtAllowSearchID").val(ui.item.id); // save selected id to hidden input
        }
    });
});

编辑:我认为问题出在 aspx 页面中:

objSQLCommand = New SqlCommand("select id, value from table1 where value like '%@prefixText%'", objSQLConnection)
objSQLCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 255).Value = "ing"
4

2 回答 2

2

我相信您必须将 ajax 调用的来源设为 Web 服务,在您的情况下,这似乎是一个页面方法。因此,如果您的代码后面的页面中有一个函数,如下所示:

public static List<string> GetData(string prefixText){ }

您需要使用[WebMethod]命名System.Web.Services空间中的方法来装饰该方法。

所以它最终看起来像:

using System.Web.Services;

...

[WebMethod()]
public static List<string> GetData(string prefixText){ }

高温高压

编辑:您还需要更新您的 ajax 调用,使其看起来像这样的源:

source: 'test_array.aspx/GetData'
于 2011-01-27T14:24:58.223 回答
1

在我看来,问题可能是源函数。当您进行 ajax 调用时,它是异步完成的。因此,该函数启动 ajax 调用并继续,它不返回任何源。

我在加载屏幕时发现了这一点。如果我在 ajax 调用之后关闭加载屏幕,则不会出现加载屏幕。我必须将它移动到 ajax 调用成功和错误事件中才能正确显示和消失。

您的来源应该只是对 url 的引用

source: "test_array.aspx",

文档中:

数据源是一个服务器端脚本,它返回 JSON 数据,通过 source-option 的简单 URL 指定。

于 2011-01-27T14:13:56.033 回答