【发布时间】:2012-12-03 10:45:19
【问题描述】:
我有一些我想在客户端处理的 JSON 对象,但我指定的我的 WebMethod 不想触发。
这是我在客户端脚本中使用的 Ajax 和 GetJson 方法: 获取SJON
$(document).ready(function() {
$(document).ready(function() {
//attach a jQuery live event to the button
$('#getdata').live('click', function() {
$.getJSON('/Members_Only/StockMovement/WebForm1.aspx/StockPlacementOptions', function(data) {
//alert(data); //uncomment this for debug
// alert(data.item1 + " " + data.item2 + " " + data.item3); //further debug
$('#showdata').html("<p>item1=" + data.item1 + " item2=" + data.item2 + " item3=" + data.item3 + "</p>");
});
});
});
这里是阿贾克斯
$(document).ready(function () {
$.ajax({
type: "POST",
url: "/Members_Only/StockMovement/WebForm1.aspx/StockPlacementOptions",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{}",
success: function (res) {
$('#Results').append(CreateTableView(res)).fadeIn();
}
});
});
这两种方法都调用 StockPlacementOptions,这是我的 WebMethod,如下所示:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json,
UseHttpGet = true, XmlSerializeString = false)]
public static List<StockReturnMethod> StockPlacementOptions()
{
scmEntitiesPrimaryCon entities = new scmEntitiesPrimaryCon();
var binOptions = (from avail in entities.ProductAvailibleBins(1, 2)
select new StockReturnMethod() { LotID = (int)avail.LotID, LotName = avail.LotName, AreaID = (int)avail.AreaID, AreaName = avail.AreaName, BinID = (int)avail.BinID, BinName = avail.BinName }).ToList();
return binOptions;
}
如果我可以让 JSON Web 方法在 $(document).ready 事件上触发,我将能够处理和使用那里的数据。我还尝试查看具有数据处理能力的不同 jQuery 库,例如 KnockoutJS,但也没有运气。 我正在使用带有 Html5 标记的 Framework 4 上的 ASP Webforms。
任何建议将不胜感激。
【问题讨论】:
-
您是否确定了应用的哪个部分存在问题?客户端还是服务器?当您直接在浏览器中打开
http://host/Members_Only/StockMovement/WebForm1.aspx/StockPlacementOptions时会发生什么?此外,您在一个示例中使用GET方法,在另一个示例中使用POST。您期待哪个页面?