Javascript 返回操作的语法不正确

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

我正在尝试使用web服务的自动完成功能获取
列表。列表已成功返回到函数,但返回分配不正确

我使用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中使用它