2011-04-29 141 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