ASP .NET Web Service将数组发送到Ajax

时间:2014-06-10 19:05:29

标签: jquery asp.net ajax web-services

您好我正在尝试通过点击转发器行项目将字符串返回到我的文本框 这里是网络方法;

   [WebMethod]
    public string  OrderGet(int User)
    {
        using (Models.DermabonEntities db = new Models.DermabonEntities())
        {



            var get = (from i in db.OrderAddress
                       where i.Id == User
                       select i.UserId).ToList();

            var a = get.FirstOrDefault().ToString();

            var res = (from i in db.OrderAddress
                       where i.UserId == a
                       select i.FirstName).FirstOrDefault();

            var res1 = (from i in db.OrderAddress
                        where i.UserId == a
                        select i.LastName).FirstOrDefault();

            object[] array1 = new object[2];

            array1[0] = res;
            array1[1] = res1;

            return array1.ToString();

        }
    }

如您所见,我返回array1 这里是ajax代码;

function siparisAl(id) {

      var User = id;



      $.ajax({
          dataType: "json",
          type: "POST",
          contentType: "application/json",
          url: "/Admin/WebService/Control.asmx/OrderGet",
          data: JSON.stringify({ 'User': User }),
          success: function (data) {

              $("#ContentPlaceHolder1_Name").val(data.d[0]);

                },
          error: function () {

          }
      });
      return false;
  }

问题是当我运行它时,将S写入Name文本框,为什么会这样?我如何解决它我的数据库中有几个名字而不是'S'请帮助

我尝试过console.log(data.d)=它说System.Object []

1 个答案:

答案 0 :(得分:1)

如果要返回字符串,请更改以下代码:

return array1.ToString();

要:

return res + res1;

在第一个片段中,您没有返回连接字符串,而是调用对象数组的ToString方法。这是System.Object[]

修改

要分别访问resres1,您可以返回:

return new { First = res, Second = res1};

在你的ajax电话的成功回调中:

data.First
data.Second

使用console.log(data)检查回复,您应该能够弄明白。

<强> EDIT2:

要返回字符串列表,请将Web方法签名更改为:

public List<string> OrderGet(int User)

在ajax调用中,数据对象将是一个数组。

<强>建议:

请您提高代码质量。检查C#命名约定和最佳实践。

<强> EDIT3:

如果您使用匿名对象(如第一次编辑中),则需要从Web服务返回匿名对象,因此请将签名更改为:

public dynamic OrderGet(int User)