2012-08-10 55 views
1

這裏有一個引導模式是我把AJAX請求的結果爲什麼在AJAX請求中顯示以前鏈接的文本顯示在頁面上?

<div class="modal hide" id="myModal"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal">×</button> 
    <h3>Modal header</h3> 
    </div> 
    <div id="modal-body"></div> 
    <div class="modal-footer"> 
    <a href="#" class="btn" data-dismiss="modal">Close</a> 
    </div> 
</div> 

的JavaScript代碼看起來像這樣

<script type="text/javascript"> 
    $('#myModal').modal('hide'); 
    $('div.divBox a').click(function(){ 
    var vendor = $(this).text(); 
    console.log(vendor); 
    $('#myModal').on('show', function(){   
     $.ajax({ 
     type: "GET", 
     url: "ip.php", 
     data: "id=" + vendor, 
     success: function(html){ 
      $("#modal-body").html(html);    
     } 
     });   
    }); 
    }); 
    $('#myModal').on('hide', function() { 
    $("#modal-body").empty(); 
    <?php unset($_GET); ?>; 
    }) 
</script> 

ip.php文件

錨鏈接代碼看起來像這樣

  <tbody> 
       <?php foreach ($rowarr as $k => $v) { ?> 
       <tr> 
        <td><?php echo $k ?></td> 
        <td> 
        <div class="divBox"> 
         <a data-toggle="modal" href="#myModal"><?php echo $v; ?></a> 
        </div> 
        </td> 
       </tr> 
       <?php } ?> 
      </tbody> 

$ k是一個數字。 $ v是一個帶空格和特殊字符的名稱。

console.log(vendor)顯示我在CDT中單擊的鏈接的文本。但模態的輸出發生了變化。它經歷了我之前點擊的所有鏈接文本,並不斷更換它們,最終以最新的鏈接文本結束。

所以,如果點擊鏈接順序控制檯輸出看起來像這樣

Microsoft Corporation 
IBM Corp 
Hewlett-Packard 
Apple 

在模式的文本將開始作爲

Array ([id] => Microsoft Corporation) 

然後用替代

Array ([id] => IBM Corp) 

然後換成

Array ([id] => Hewlett-Packard) 

然後用

Array ([id] => Apple) 

是跟蹤鏈接的點擊網頁上的哪個結了?每次單擊新鏈接時是否需要重置它?

編輯:在迴應「你有什麼試過?」

我在裏面加了$("#modal-body").empty();,希望可能是我需要清除的模態體。那不是。然後我想也許GET變量需要在關閉模式時重置,所以我加了<?php unset($_GET); ?>;。但是print_r($ _ GET)顯示該數組只包含一個數組元素,而不是之前點擊的所有鏈接。所以我無法確定點擊鏈接的歷史記錄。

+0

[你嘗試過什麼(http://www.whathaveyoutried.com)? – Matt 2012-08-10 20:31:21

+0

@Matt - 我添加了'$(「#modal-body」)。空();'在那裏,希望可能是我需要清除的模態體。那不是。然後我想也許GET變量需要在關閉模式時重置,所以我添加了<?php unset($ _ GET); ?>;'。但是print_r($ _ GET)顯示該數組只包含一個數組元素,而不是之前點擊的所有鏈接。所以我無法確定點擊鏈接的歷史記錄。 – devcoder 2012-08-10 20:36:51

回答

1

所以基本上,每次點擊一個divBox鏈接時,它會在myModal'show'事件中添加一個新處理程序。所以基本上點擊5個不同的divBox鏈接後,myModal的show事件將循環5個不同的處理函數。

基本上你需要刪除之前添加的'顯示'處理程序,然後添加一個新的。

$('#myModal').off('show'); 

Best way to remove an event handler in jQuery?

+0

MAN!你是男人!希望我能更多地讚揚你。我甚至不知道如何解釋這個問題,或者我是否正確解釋了它。 – devcoder 2012-08-10 21:07:17

相關問題