好的,我有一个在单击图像时调用的函数。出于某种原因,当我点击它时,它只会调用一次,我对它的原因感到有些困惑。
这是我的javascript(结合少量剃须刀),基本上它所做的就是在控制器中调用post方法,返回局部视图并更新局部视图。
function mFunction() {
@{ x = x = 1; }
$.post('/Home/_MyPartial', { 'param1': "@x" }, function(result) {
$('.myUpdatedDiv').html(result);
$('.anotherDiv').empty();
$('.anotherDiv').append('@x');
});
}
然后我有这样的标签
<a href="#" onclick="mFunction()">Hello</a>
它可以像我期望的那样完美地更新视图,但有一些愚蠢的例外。
所以我很感激为什么它不会多次更新。
感谢
修改的
好的,我可以这样说:
@{ int x = 0; }
<script type="text/javascript">
function tester() {
@{ x++; }
$('.H').empty();
$('.H').append('@x');
}
</script>
<div class="H"></div>
<a href="#" onclick="tester()">Click</a>
单击标签将显示“1”并单击它将始终显示“1”。这是否只与渲染一次或某事的剃刀代码有关?有办法吗?
答案 0 :(得分:1)
试试这个
<script type="text/javascript">
var indx = 1;//Set this to be the value from the model you want to display
function tester() {
$('.H').empty();
$('.H').append(indx);
indx++;
}
</script>
<div class="H"></div>
<a href="#" onclick="tester()">Click</a>
答案 1 :(得分:0)
Razor代码只能在服务器上运行,当你下载页面时,你所拥有的是具有Razor值输出的javascript,所以你的第二个例子将如下所示:
<script type="text/javascript">
function tester() {
$('.H').empty();
$('.H').append('1');
}
</script>
<div class="H"></div>
<a href="#" onclick="tester()">Click</a>
这就是为什么它只会附加1。
答案 2 :(得分:0)
我建议您使用Firefox的Firebug或Web控制台(Ctrl + Shift + K)来查看异步调用。如果浏览器实际上每次点击都会点击服务器,你就会知道(你甚至可以看到POST或GET的参数)。 它看起来应该每次都与服务器联系,但由于调用之间没有保持状态,所以在第一次调用后总是得到相同的结果(因为你总是在第一次调用后发送相同的X值)。