0
我有以下的在我的MVC视图页Jquery
jQuery来计算返回的行数
$(function() {
$('#SelectedProductId').change(function() {
var selectedProduct = $('#SelectedProductId option:selected').val();
if (selectedProduct == null || selectedProduct == -1) {
return false;
}
$('#pleaseWaitMessage').dialog("open");
$.ajax({
type: "POST",
url: "MyProducts.aspx/GetProducts",
data: { ProdId: selectedProduct },
timeout: 8000,
success: function (data) {
var content = $(data);
$('#productParameters').html(content);
$('#pleaseWaitMessage').dialog("close");
},
error: function() {
$('#pleaseWaitMessage').dialog("close");
$('#systemError').dialog("open");
}
});
});
});
这很好,它会返回产品列表,并根据从下拉列表中选择的选项将它们显示在页面上。
我想尝试做的事情是扩展这个有点如此success
它也将检查已返回的项目数,这样我可以尝试启用/禁用选项。所以如果它返回0,我会禁用页面上的购买按钮,如果它大于0,它应该启用它。
我试过使用content.count >0
但是当我第一次计入alert
它说34当我真的预期1(只有1行)。
是否有任何简单的方法来检查有多少行已被返回,在上面的jquery
,然后执行另一个操作?
编辑: 该数据是通过调用我的Controller - > Data Access Layer类 - > SQL获得的,没有web服务。
EDIT2: 在@Roberto利纳雷斯的建议,我完整的脚本看起来与文档准备功能
$(function() {
$('#SelectedProductId').change(function() {
var selectedProduct = $('#SelectedProductId option:selected').val();
if (selectedProduct == null || selectedProduct == -1) {
return false;
}
$('#pleaseWaitMessage').dialog("open");
$.ajax({
type: "POST",
url: "MyProducts.aspx/GetProducts",
data: { ProdId: selectedProduct },
timeout: 8000,
success: function (data) {
var content = $(data);
$('#productParameters').html(content);
$('#pleaseWaitMessage').dialog("close");
},
error: function() {
$('#pleaseWaitMessage').dialog("close");
$('#systemError').dialog("open");
}
});
});
})如下:
我的视图页包含
<div>
<div id="tableHolder">
<table id="productList">
<thead>
<tr>
<th>product</th>
<th>Date From</th>
<th>Date To</th>
<th> </th>
</tr>
</thead>
<tbody id="productParameters"></tbody>
</table>
</div>
</div>
你为什么不以发送行数服务器的响应? – DmitryK
看起来你现在只是在返回HTML?将计数和新的HTML内容作为属性的JSON对象将是一种方法。或者,您可以在更新内容之后计算'#productParameters'内的行数(实际为'
回答
为什么不返回BOT的内容和成功计数。
E.g.返回具有OriginalContent和ContentCount(一个int)
,然后在你的JS对象
来源
2014-02-20 15:51:40 dove
最好的办法是在你的Ajax响应,但因为你返回的行数作为一个额外的价值只是返回原始HTML而不是json或任何其他结构数据,您可以计算在执行
$('#productParameters').html(content);
后插入的HTML元素的数量。假设你插入
<table>
内<tr>
元素的列表,你可以用东西将他们像$('#productParmeters>table>tbody>tr').length
来源
2014-02-20 15:52:20
我很喜欢计算TRs的想法,因为这看起来很简单。将代码放入我列出的jQuery中的最佳位置在哪里?我试过$('#productParameters')。html(content);但它返回0(我只能收集这是因为它在页面完成呈现之前计数)。 – MattR
@MattR如果页面还没有完成渲染,那么代码应该放在'$(document).ready(function(){});'中。同时检查遍历查询是否正确。我只是猜测你从Ajax调用返回的HTML。 –
我试过了,它仍然返回0.我已经将代码添加到原始帖子上,以便您找到我要去的地方错了。 – MattR
后尽数我会稍微不同的方式解决这个问题 -
让我们产品模型 -
而且还有一个控制器动作将返回产品列表作为JSON结果 -
而在视图上,我使用JQuery模板呈现所有产品。这种模板化方法的好处是,我们的控制器操作不需要返回html响应,它可以简单地返回产品列表。因此可以使用
data.length
来计算计数,同时使用模板可以实现数据的动态绑定。不是jQuery函数会 -
当我们点击按钮即可输出 -
来源
2014-02-20 16:27:45 ramiramilu
相关问题