问题:
在使用jQuery的ASP.NET MVC项目中,jQuery.post()
函数很少返回数据,当我希望它始终返回数据时。
问题:
为什么我的.post()
函数很少激活成功回调函数 - 即使每个帖子返回的状态代码为200 OK?
详情:
我在ASP.NET cshtml视图中定义了10个空跨度。 html中的每个跨度都由一个脚本跟随,该脚本调用一个名为ShowConstraints()
的javascript函数:
<div>
@for (int i = 0; i < 10; i++)
{
string tempID = "span" + i;
<span id="@tempID"></span>
<script>ShowConstraints("@tempID")</script><br />
}
</div>
在调用脚本之前,生成的html对于每个span
都是这样的:
<div>
<span id="span0"></span>
<script>ShowConstraints("span0")</script><br>
...
ShowConstraints()
功能如下:
function ShowConstraints(outputId) {
outputEl = "#" + outputId;
$(outputEl).html("Calculating info...");
$.post("/TestURL/TestPost", function (data) {
$(outputEl).html(data);
});
}
/TestURL/TestPost
的返回值始终为<span>Returned!</span>
。
我知道当跨度显示&#34;计算信息...&#34;时,已成功调用过帐功能。而且我知道当一个跨度改变以显示&#34;返回时发生了成功的帖子。&#34;。
然而,当只运行一个或两个跨度时,显示&#34;返回!&#34;。其余的节目&#34;计算信息...&#34;
作为附加信息,当我调试javascript并逐步执行时,一切都按预期工作,所有跨度显示&#34;返回!&#34;。
非常感谢。
答案 0 :(得分:0)
我真的不建议在HTML中执行这样的代码。它必然会导致不一致,尤其是使用多个<script>
标记进行多次调用时。
您应该在JavaScript代码的主要部分内执行页面加载,例如:
// On the page load
$(document).ready(function() {
// Get the spans that we want to loop through
$('span.mySpans').each(function(index, value) {
var outputId = $(this).attr('id');
ShowConstraints(outputId);
});
});
使用HTML:
<span class="mySpans" id="span0"></span>
<span class="mySpans" id="span1"></span>
<span class="mySpans" id="span2"></span>
<span class="mySpans" id="span3"></span>
答案 1 :(得分:0)
最有可能发生的事情是你一次性调用这些信息,当时有些信息已经返回
outputEl = "#" + outputId;
现在设置为原始outputEl以外的其他内容。 您可以尝试延迟这些功能,以便它们不会同时调用,或尝试将它们作为回调函数链接。