2016-02-01 68 views
2

在一個按鈕上單擊我調用python腳本,然後將結果填充到數組中。完成後,我會創建<a href>個對象作爲陣列的長度的<a href>個對象。問題是,一旦鏈接顯示,它們立即消失。javascript生成的對象在出現後立即消失

Body: 
//I obviously get the same effect by putting the onclick event in the submit button 
window.onload = function() { 
    alert("loaded"); 
    document.getElementById('submit_searchsubs').onclick = function() { 
     FindSubtitles(); 
    }; 
}; 

function FindSubtitles() { 

     postData = {"movie": "Outlander", "season":"1", "episode":"2"};    
      $.ajax({ 
       url: "/cgi-bin/find_subtitles.py", 
       type: "post", 
       datatype:"json", 
       async : false, 
       data: {postData}, 
       success: function(response){ 
        var subs = new Array(); 
        var json = $.parseJSON(response); 
        for (var i=0;i<json.length;++i) { 
         subs[i] = new Array(json[i].IDSubtitle, json[i].SeriesEpisode, json[i].SubHash, json[i].SubDownloadsCnt, json[i].SeriesSeason, json[i].ZipDownloadLink, json[i].MovieName, json[i].id, json[i].SubFileName); 
        } 
        DisplaySubtitles(subs); //show the users the new words found in this subtitle 
       } 
      }) 
      .fail(function(err) { 
       alert("error" + err); 
      }); 

    } 

function DisplaySubtitles(subs) { 
     var SubtitleDiv = document.getElementById("SubtitleDiv"); 
     var a = document.createElement('a'); 
     for (i = 0; i < subs.length; i++) { 
      var linkText = document.createTextNode(subs[i][8]); 
      a.appendChild(linkText); 
      SubtitleDiv.appendChild(a); 
     } 
} 

所以會發生什麼:

  1. 頁面加載
  2. 因爲它的window.onload燃煤真實
  3. FindSubtitles
  4. 警報( 「裝」)顯示運行
  5. DisplaySubtitles運行和<a>鏈接出現
  6. <a>鏈接消失,警報(「已加載」)顯示再次。

我不知道我是否應該使用async: true,因爲在這種情況下,我得到[Object object]錯誤,這很奇怪,因爲在另一個腳本我使用的情況下,否則將凍結的UI。

任何想法?

+2

您的'submit_searchsubs'是否提交表單按鈕?也許頁面在表單提交後重新加載。 – Kieveli

+0

就是這樣。這是一個輸入按鈕,它重新加載了頁面。我將它改爲傳統的按鈕,現在它可以工作!謝謝!請添加此作爲答案。 – erdomester

+0

我選擇,而不是給你想象的點!很高興我能幫上忙。 – Kieveli

回答

1

正如Kieveli提到的,​​如果submit_searchsubs是一個提交的表單按鈕,它可能會在提交後刷新頁面。嘗試使用return false;繞過默認瀏覽器的onclick動作。

document.getElementById('submit_searchsubs').onclick = function() { 
    FindSubtitles(); 
    return false; 
}; 
+0

不錯 - 不知道如何繞過。 – Kieveli