2011-04-29 142 views
1

我想将我的Perl CGI脚本的内容加载到HTML页面中。​​不起作用。请告诉我什么是错在这里:jQuery Ajax CGI:加载脚本

$(document).ready(function() { 
    $('input:checkbox').change(function() { 
    var nom = $(this).attr("value"); 
    if ($(this).is(':checked')) { 
     alert('okok'); 
     $('body').load("../cgi-bin/essai.pl"); 
    } else { 
     //$("#" + nom).remove(); 
    } 
    }); 

我想:

  • 当我选中该复选框(其为值“TOTO”)负荷(阿贾克斯)essai.pl?param=toto
  • 当我取消选中此复选框时,删除之前加载的内容。

希望有人有一点时间来帮助我离开这个jQuery噩梦。
再见。

回答

2

您正在将脚本的输出直接加载到正文中,因此您将使所有以前的正文内容(包括您的复选框)消失。我认为这就是你的经历。

您应该做的是为脚本生成的内容提供一个专用块,并将该块用作加载函数的目标。

HTML:

<body> 
<div id="controller"> 
    <input type="checkbox" name="toto" id="toto"></input> Load/unload content 
    </div> 
<div id="target"> 
    Content comes here 
    </div> 
</body> 

的JavaScript:

$('input:checkbox').change(function(){ 
    if ($(this).is(':checked')) { 
     var target_url = "../cgi-bin/essai.pl?param="+$(this).attr('name'); 
     $('div#target').load(target_url); 
    } 
    else { 
     $("div#target").html(''); 
    } 
}); 

我也从 “../cgi-bin/” 式的相对路径定义避免和使用绝对路径来代替。

工作在http://jsbin.com/izuni4/19

编辑例如可好像我没有完全掌握你试图实现。 这是一个编辑版本的相同的JavaScript附加/删除由多个复选框触发的内容块。希望能够解决您的问题:

http://jsbin.com/izuni4/22/

+0

太棒了,那就是我所寻找的。但我有4复选框,当我检查第一个复选框时,在#target中加载了新的div,但是当我检查第二个复选框时没有附加任何内容。这是因为加载不像追加?它不能添加更多,它擦除? – eouti 2011-04-29 12:16:56

+0

@eouti:编辑答案以更好地满足您的需求。 – 2011-04-29 12:50:33

+0

http://jsbin.com/izuni4/22/正是我需要的! \ n \ n我投给你的家伙 – eouti 2011-04-29 13:14:46