【问题标题】:ASP .NET WebService sending array to the AjaxASP .NET WebService 向 Ajax 发送数组
【发布时间】:2014-06-10 19:05:29
【问题描述】:

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

   [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 写入名称文本框,为什么会这样?我该如何解决我的数据库中有几个名字而不是“S”请帮助

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

【问题讨论】:

  • 你能澄清你的问题是什么(我在理解你所说的事情时遇到了一点麻烦)吗?
  • 让我解释一下,我有一个订购产品的转发器,我用转发器列出它们,在转发器中我有很少的描述,比如姓氏,当你点击它时,我有一个每行的 ımage 按钮发送订单 ID到ajax然后是webservice。所以我控制了 ID,然后我将完整的描述返回到对话框。这是名字姓氏地址等,但问题是当我返回数组时它没有给出名字和姓氏它给出'S'

标签: jquery asp.net ajax web-services


【解决方案1】:

如果要返回字符串,请将代码更改为:

return array1.ToString();

收件人:

return res + res1;

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

编辑:

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

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

在你的 ajax 调用的成功回调中:

data.First
data.Second

使用console.log(data)查看回复,你应该可以弄清楚。

编辑2:

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

public List<string> OrderGet(int User)

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

建议:

拜托,您应该提高代码质量。检查 C# 命名约定和最佳实践。

编辑3:

如果您使用匿名对象,例如在第一次编辑中,您需要从您的网络服务返回一个匿名对象,因此将签名更改为:

public dynamic OrderGet(int User)

【讨论】:

    猜你喜欢
    • 2013-05-02
    • 2017-01-28
    • 2014-01-03
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 2019-07-20
    • 2018-08-11
    相关资源
    最近更新 更多