我有一个文本框,我是用户在其中输入供应商名称。在模糊中,我想检查一个网络服务以查看供应商是否存在,如果存在,我想从网络服务返回供应商 ID 并使用它来填充另一个文本框。
该网络服务工作正常,因为我在其他地方使用它很好(使用类似的代码来执行自动完成)它以 JSON 格式返回数据,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
-<ArrayOfSuppliers xmlns="http://tempuri.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Suppliers>
<SupplierID>1</SupplierID>
<SupplierName>Supplier 1</SupplierName>
</Suppliers>
</ArrayOfSuppliers>
下面的代码是一团糟,不会按原样工作。我希望它有助于解释我正在尝试做的事情,并且你也可以帮助我理解我做错了什么以及数据是如何返回和使用的。
作为起点,我收到“响应”未定义的错误。我明白为什么,但我不明白我需要做什么来解决它。
$(document).ready(function () {
$("[id$=txtSupplier]").blur(function () {
$.ajax({
type: "POST",
url: "http://localhost:52350/FabRouting/Webservice/SupplierList.asmx/GetSuppliers",
data: "{ 'SupplierSearch': '" + $("[id$=txtSupplier]").val() + "' }",
contentType: "application/json; charset=utf-8",
dataType: "json",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
value: item.SupplierName,
id: item.SupplierID
}
}))
},
error: function(e){
$("[id$=lblSupplier]").html("Unavailable");
}
});
}
);
});
在我完成这项工作后,我仍然需要知道如何获取返回的内容并设置一个文本框,但如果我能让这段代码发挥作用,我可能可以通过我的方式来解决这个问题。
编辑
我有一些使用此代码的自动完成功能:
$(document).ready(function () {
$(".cRejectedOnSDRR").autocomplete({
source: function (request, response) {
$.ajax({
url: "http://localhost:52350/FabRouting/Webservice/ReportList.asmx/GetReports",
data: "{ 'ReportNumberSearch': '" + request.term + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
value: item.ReportNumber,
id: item.SDRRID
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
minLength: 1,
select: function (event, ui) {
$("[id$=lblRejectedOnSDRRID]").html(ui.item.id);
},
});
});
并试图以此为基础来做我在顶部提到的模糊处理。我不太了解如何简单地获取和使用从 Web 服务返回的数据,因此我试图对自动完成代码进行逆向工程以帮助自己理解它。