我有一个jQuery .post命令,它在我的ASP.NET项目中调用一个Web服务。该Web服务正在运行存储过程并将数据打包到要返回给客户端的对象中。当我通过Firebug查看响应时,一切都被送回。但是,当我尝试访问该响应对象时,它为null。为什么呢?
我的jQuery:
$(".listingManagerEdit").live("click", function () {
$.post("/WebServices/AoP.asmx/GetListingManagerByID",
JSON.stringify({
ListingMgrID: $(this).closest("li.listingMgrs").data("listingmgrid")
}),
function (data) {
$(".billingName").val(data.Name);
$(".billingOrgName").val(data.OrgName);
$(".billingAddress1").val(data.Address1);
$(".billingAddress2").val(data.Address2);
$(".billingCity").val(data.City);
$(".billingState option:selected").val(data.State);
$(".billingZipCode").val(data.Zip);
$(".billingPhone").val(data.Phone);
$(".billingPhoneExt").val(data.PhoneExt);
$(".billingFax").val(data.Fax);
$(".billingFaxExt").val(data.FaxExt);
$(".billingEMail").val(data.Email);
}
);
});
我的网络服务:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public ListingManager GetListingManagerByID(int ListingMgrID)
{
ListingManager LM = new ListingManager();
DataTable dt = DataAccess.AoP.GetListingManagerByID(ListingMgrID);
LM.Name = dt.Rows[0]["Name"].ToString();
LM.OrgName = dt.Rows[0]["OrgName"].ToString();
LM.Address1 = dt.Rows[0]["Address1"].ToString();
LM.Address2 = dt.Rows[0]["Address2"].ToString();
LM.City = dt.Rows[0]["City"].ToString();
LM.State = dt.Rows[0]["State"].ToString();
LM.Zip = dt.Rows[0]["Zip"].ToString();
LM.Phone = Utilities.FormatPhoneNumber(dt.Rows[0]["Phone"].ToString());
LM.PhoneExt = dt.Rows[0]["PhoneExt"].ToString();
LM.Fax = Utilities.FormatPhoneNumber(dt.Rows[0]["Fax"].ToString());
LM.FaxExt = dt.Rows[0]["FaxExt"].ToString();
LM.Email = dt.Rows[0]["Email"].ToString();
return LM;
}
响应(根据FireBug):
d: {…}
__type BusinessLogic.AoP+ListingManager
Name: John Smith
OrgName:
Address1: 123 Pine Street, 3rd Floor
Address2:
City: San Francisco
State: CA
Zip: 94104
Phone: (415) 123-4567
PhoneExt:
Fax:
FaxExt:
Email: me@me.org
在.post电话的成功功能中,"数据"是空的。
答案 0 :(得分:1)
你应该传回json,但是你要归还一个物体。
如果你可以使用JSON.Net,
return JsonConvert.SerializeObject(LM);
// or serialize it in C#.
在回调中
function (data) {
var o = JSON.parse(data);
$(".billingName").val(data[0].Name);
...