您好我正在尝试通过点击转发器行项目将字符串返回到我的文本框 这里是网络方法;
[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 []
答案 0 :(得分:1)
如果要返回字符串,请更改以下代码:
return array1.ToString();
要:
return res + res1;
在第一个片段中,您没有返回连接字符串,而是调用对象数组的ToString方法。这是System.Object[]
。
修改强>
要分别访问res
和res1
,您可以返回:
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)