我有下面的脚本似乎不起作用。 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"
答案 0 :(得分:2)
我相信您必须将ajax调用的源代码发送到Web服务,在您的情况下,这似乎是一个Page方法。因此,如果您的代码在页面后面有一个函数,则如下所示:
public static List<string> GetData(string prefixText){ }
您需要使用[WebMethod]
命名空间中的System.Web.Services
修饰该方法。
所以它最终会是这样的:
using System.Web.Services;
...
[WebMethod()]
public static List<string> GetData(string prefixText){ }
HTH
编辑:你还需要更新你的ajax调用,看起来是这样的来源:
source: 'test_array.aspx/GetData'
答案 1 :(得分:1)
在我看来,问题可能是源功能。进行ajax调用时,它是异步完成的。因此,该函数启动ajax调用并继续,它不会为源返回任何内容。
我在加载屏幕时发现了这一点。如果我在ajax调用后关闭加载屏幕,则不会出现加载屏幕。我不得不在ajax调用成功和错误事件中移动它以使其出现并正确消失。
您的来源应该只是对网址的引用
source: "test_array.aspx",
数据源是服务器端脚本 返回通过指定的JSON数据 source-option的简单URL。