1

这是代码:

$("#AddFriendToGroup").tagit({
                 autocomplete: { 
                    source: function (request, response) {
                        $.ajax({
                            type: 'POST',
                            url: 'ChatPageTest.aspx/tagFriendAutocomplete',
                            data: "{'ClientID':'" + $("#UserID").val() + "','ClientName': '" + request.term + "'}",
                            contentType: 'application/json; charset=utf-8',
                            dataType: 'json',
                            success: function (data) {
                            },
                            error: function (xhr) {
                                alert("responseText: " + xhr.responseText);
                            }
                        });
                    },
                        minLength: 2
                    }
                });

服务器端 :

public static string tagFriendAutocomplete(int ClientID,string ClientName)
{
    string Result = "";
    string query = "select fr.FRIEND_ID,c.[USER_NAME] from clients c inner join friends fr on c.CLIENT_ID=fr.FRIEND_ID and fr.CLIENT_ID=" + ClientID + " and c.[USER_NAME] like '%" + ClientName + "%' ";

    DataTable dt = new SQLHelper(SQLHelper.ConnectionStrings.WebSiteConnectionString).getQueryResult(query);
    if (dt.Rows.Count > 0)
    { 
       for(int i=0;i<dt.Rows.Count;i++)
       {
           Result += dt.Rows[i]["FRIEND_ID"] + "," + dt.Rows[i]["USER_NAME"];
        }
    }

    return Result;
}

我很困惑,我不知道在 ajax 成功功能上放置的正确代码是什么

4

2 回答 2

2

有关在 tagit 中使用 $.ajax() 的信息,请参阅如何让 tagSource 与 $.ajax() 一起使用

于 2013-04-08T12:23:10.857 回答
1

这实际上有点棘手,我不记得在文档中看到了答案。

我所做的是以下内容:

$("#[id of tag to attach to]").tagit({
autocomplete: {
    source: function( request, response ) {
        if (acAjax && acAjax.readyState != 4)
            acAjax.abort();

        $("#loading").show();

        acAjax = $.ajax({
            url: [server url],
            dataType: "json",
            data: {
                term: request.term
            },
            success: function( data ) {
                returnedUsers = data;
                response( $.map( data, function( item ) {
                    return {
                        label: item,
                        value: item
                    }
                }));
            },
            error: function(xhr, status, error) {
                returnedUsers = [];
            },
            complete: function(xhr, status, error) {
                $("#loading").hide();
            }
        });
    },
    minLength: 2
},
allowSpaces: true,
beforeTagAdded: function(event, ui) {
    if ($.inArray(ui.tagLabel, returnedUsers)==-1)
        return false;
}
});

抱歉格式不好。几点注意事项:

  1. 成功的“响应”功能——这是 tagit 理解的功能。我不完全确定它是如何工作的,但请注意,使用这种格式,您可以让标签打印一件事(“标签”),并将值设为其他内容。

  2. 'returnedUsers' 数组允许我阻止用户添加 ajax 未返回的标签。这有点难以弄清楚,所以我希望这对你有帮助。

其他选项在文档中列出,所以我不会深入探讨。希望这对你有帮助。简单地指向文档是没有帮助的——我知道!

于 2013-04-11T19:25:39.857 回答