2010-06-29 99 views
0

我有一个按钮点击功能,当按钮被点击时运行$ .getJSON。它从控制器获取一些值,将这些值发布到某些表单域并打开包含该表单的模式。 我第一次点击运行$ .getJSON的按钮,发布值并打开模式就好了。 当我关闭模式并再次点击按钮。它只是打开模式,值是旧值。它不会再次运行$ .getJSON。我知道这并不是因为我在控制器中放置了一个断点。它第一次达到了这个突破点。但其他时间不会进入控制器,直到我完全重新加载页面。

这里是我的按钮,点击脚本

$('[id^=edit]').button().click(function() { 
    var selected = $(this).val(); 
    var arr = selected.split(','); 
    var item = arr[0]; 
    var parent = arr[1]; 
    $("#itemspan").text(parent); 
    $("#parentspan").text(item); 
    $("#partno")[0].value = item; 
    $("#parent")[0].value = parent; 
    var url = $("#itemdetailsjsonurl").attr("href"); 
    var fullurl = url + '/' + item + '/' + parent; 
    $.getJSON(fullurl, null, function (data) { 
     $("#qty")[0].value = data.qty; 
     $("#startdate")[0].value = data.sdate; 
     $("#enddate")[0].value = data.edate; 
     $("#notes")[0].value = data.memo; 
    }); 

    $("#edtbomitem").dialog('open'); 
}); 

任何想法,为什么?

回答

2

默认情况下,它会被浏览器缓存。您可以使用jQuery的ajax堆栈将其关闭:http://api.jquery.com/jQuery.ajax/

缓存
默认值:true,false为的dataType“脚本”和“JSONP” 如果设置为false,这将迫使你要求不被浏览器缓存的页面。

Grz,Kris。

+1

这看起来像它为我做的感谢你!我刚刚添加了$ .ajaxSetup({cache:false}); getJson – twal 2010-06-29 15:10:50

0

点击事件已经被触发,所以jQuery停止监听点击。

尝试:$('[id^=edit]').button().live('click', function() {

+0

之前甚至还会发生,因为正如我所说的模式再次打开。只是得到JSON不工作。 – twal 2010-06-29 15:11:27

0

我的猜测是,你回来从服务器上您的信息后,你不会钩住你的按钮onclick事件。

因此,要么使用.live语法,要么在呼叫服务器后手动重新连线。