Javascript 返回操作的语法不正确
我正在尝试使用web服务的自动完成功能获取Javascript 返回操作的语法不正确,javascript,jquery,asp.net,ajax,Javascript,Jquery,Asp.net,Ajax,我正在尝试使用web服务的自动完成功能获取列表。列表已成功返回到函数,但返回分配不正确 我使用console.log查看返回的结果,得到的结果如下: 对于console.log(itemList)我得到: public class Cities { public string CityName { get; set; } public int CityId { get; set; } { [WebMethod] public List<Cities> Ge
列表。列表已成功返回到函数,但返回分配不正确
我使用console.log查看返回的结果,得到的结果如下:
对于console.log(itemList)
我得到:
public class Cities
{
public string CityName { get; set; }
public int CityId { get; set; }
{
[WebMethod]
public List<Cities> GetCitiesByPrefix(string prefixText)
{
var service = new Cities();
var cities = service.GetCityByPrefix(prefixText);
return cities;
}
[对象,对象,对象]
0:Object
CityId: 7932
CityName: "BADGERYS CREEK"
__type: "Cities"
__proto__: Object
1: Object
CityId: 7933
CityName: "BALGOWLAH HEIGHTS"
__type: "Cities"
__proto__: Object
2: Object
CityId: 7934
CityName: "BALMAIN EAST"
__type: "Cities"
__proto__: Objectlength: 3
__proto__: Array[0]
....
为了能够从web服务读取回复,我必须循环结果。我需要这样做,但不知道正确的语法是什么:
$("#txtDeliveryCity").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "SfWebService.asmx/GetCitiesByPrefix",
dataType: "json",
data: "{'prefixText' :" + "'" + request.term + "'}"
success: function (data) {
response($.map(data, function (itemList) {
var listCityName = [];
var listCityId = [];
var counter = 0;
for (var i = 0; i < itemList.length; i++) {
listCityName[i] = itemList[i].CityName;
listCityId[i] = itemList[i].CityId;
}
// ------ This is not right:
return { label: listCityName, value: listCityId };
}));
}
});
$(“#txtDeliveryCity”).autocomplete({
来源:功能(请求、响应){
$.ajax({
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:“SfWebService.asmx/GetCitiesByPrefix”,
数据类型:“json”,
数据:“{'prefixText':“+”“+request.term+“}”
成功:功能(数据){
响应($.map(数据,函数(itemList){
变量listCityName=[];
var listCityId=[];
var计数器=0;
对于(var i=0;i
服务器端:
public class Cities
{
public string CityName { get; set; }
public int CityId { get; set; }
{
[WebMethod]
public List<Cities> GetCitiesByPrefix(string prefixText)
{
var service = new Cities();
var cities = service.GetCityByPrefix(prefixText);
return cities;
}
公共级城市
{
公共字符串CityName{get;set;}
public int CityId{get;set;}
{
[网络方法]
公共列表GetCitiesByPrefix(字符串前缀)
{
var服务=新城市();
var cities=service.GetCityByPrefix(prefixText);
回归城市;
}
如果在呈现文本和值字段时遇到问题,请使用以下代码
$("#elementID")
.bind("blur", function(event) {
var currentText = $(this).html();
if (currentText === undefined || currentText === "") {
this.innerHTML = this.value = "";
}
}).autocomplete({
minLength: 0,
source: function(request, response) {
$.ajax({
url: "your url",
data: {},cache: false,type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(datas) {response(datas.d);},
error: function(error) {alert(error.responseText);}
});
},
focus: function(event, ui) {
$(this).html(ui.item.CityName);
return false;
},
select: function(event, ui) {
$(this).html(ui.item.CityName);
$(this).attr("value", ui.item.CityId);
}
}).autocomplete("instance")._renderItem = function(ul, value) {
return $("<li></li>").data("item.autocomplete", value).append('<span value=' + value.CityId + '>' + value.CityName + '</span>').appendTo(ul);
};
$(“元素ID”)
.bind(“模糊”,函数(事件){
var currentText=$(this.html();
如果(currentText==未定义| | currentText===“”){
this.innerHTML=this.value=“”;
}
}).自动完成({
最小长度:0,
来源:功能(请求、响应){
$.ajax({
url:“您的url”,
数据:{},缓存:false,键入:“GET”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:函数(datas){response(datas.d);},
错误:函数(错误){alert(error.responseText);}
});
},
焦点:功能(事件、用户界面){
$(this.html(ui.item.CityName);
返回false;
},
选择:功能(事件、用户界面){
$(this.html(ui.item.CityName);
$(this.attr(“value”,ui.item.CityId);
}
}).autocomplete(“实例”)。\u renderItem=函数(ul,值){
返回$(“”).data(“item.autocomplete”,value).append(“+value.CityName+”).appendTo(ul);
};
这将处理自动完成的所有要求,例如按下向下箭头、向上箭头和回车键进行选择。
希望这有帮助:)这似乎是对的-没有错误!但我看不到返回的结果。我需要将数据附加到某个对象吗?不需要,因为我们在success方法中返回数据作为响应(datas.d),这将自动执行。如果从服务器返回的对象位于[{CityId:1,CityName:'A'},{CityId:2,CityName:'B'}]
format则不会产生任何问题。如果可能,请提供从服务器端返回的数据数组。添加了。谢谢!我可以使用google develper查看结果,它们只是不会显示在自动完成文本框下。可能是因为我在modalpopup中使用它