2010-03-27 69 views
1

我有一个名为在客户端控制器测试和MVC行动DIV使用jquery load来加载adiv中的内容?

的观点:

<input id="B1" type="button" value="test" /> 
    <div id="test"> 
</div> 

public string testout() 
{ 
    return DateTime.Now.ToString(); 
} 

我使用jQuery来更新DIV

控制器
$("#B1").live("click", function() { 
    $("#test").load("/client/testout"); 
    return false; 
}); 

第一次点击按钮我看到日期和t ime在div测试中。第二次没有任何变化。

+2

有没有可能是你的行动被缓存? – Paddy 2010-03-27 10:59:30

+0

你可以发布HTML吗? – 2010-03-27 10:59:31

+0

尝试使用'$(“#test”)。load(“/ client/testout?”+ new Date()。getTime());'以确保动作未被缓存 – 2010-03-27 11:13:01

回答

3

尝试任何负载之前放置在这个jQuery代码出现:

$.ajaxSettings.cache = false; // or $.ajaxSetup({ cache: false }); 

这可以防止客户端缓存的请求。如果这不起作用,问题是服务器给你一个缓存输出。

+0

谢谢你这就是我工作的伟大 $ .ajaxSetup({缓存:假}); – 2010-03-27 15:16:15

+0

+1谢谢! :D同样的问题在这里解决! – Jonathan 2011-03-25 10:32:46

0

在ASP.NET MVC中,返回ActionResult的行为是一个好习惯。尝试修改这样你的代码,看看它是否有什么差别:

public class ClientController: Controller 
{ 
    public ActionResult TestOut() 
    { 
     return Content(DateTime.Now.ToString(), "text/plain"); 
    } 
} 

和您的JS:

$(function() { 
    $('#B1').live('click', function() { 
     $('#test').load('/client/testout'); 
     return false; 
    }); 
}); 
+0

回报错误的意义是什么? .live()事件是否以某种奇怪的方式冒泡? – JKirchartz 2010-03-27 14:34:59

+0

如果'#B1'是一个锚点(我们在这里不知道,因为OP没有显示标记),当你点击它时,它会简单地跟随链接并重定向到另一个页面,而没有机会进行AJAX调用执行。 – 2010-03-27 14:36:58

+0

B1是一个div的代码工作罚款第一次点击,但第二次点击我希望日期将更新什么都没有发生,旧的日期仍然出现在div b1和debuger没有击中testout行动 – 2010-03-27 14:51:32