2014-02-21 62 views
1

我具有Ajax調用,這從該頁面得到整個頁面,我獲得頁面的部分(其具有的JavaScript)。當我追加部分的html頁面時,javascript沒有執行。如何在ajax響應頁面中執行javascript?

如果我追加Ajax響應直接,則腳本執行和做工精細。我的問題是,爲什麼JavaScript沒有執行,當我嘗試從Ajax響應追加頁面的部分?我想讓它工作。有什麼建議麼 ?

JavaScript函數:

function showUsers(pageNumber) { 
    $.ajax({ 
     url : '/ajax/users/show_users', 
     data : { 
      pageNumber : pageNumber == null ? 1 : pageNumber 
     }, 
     type : 'get', 
     cache : false, 
     dataType: 'text', 
     success : function(response, textStatus, xhr) { 
      var resultData = '<div>' + response + '</div>'; 
      var todo = $(resultData).find("#todo"); 
      console.log(todo.text()); 
      $('#users').html(todo); 
     } 
    }); 
}; 

show_users.html頁:

<!DOCTYPE html> 
<html> 
<head> 
<title>Testing</title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script src="/resources/js/jquery.js"></script> 
</head> 
<body> 
    <h1 id="kalees">My First Heading Kalees</h1> 
    <div id="todo"> 
     <h1>My First Heading</h1> 

     <p>My first paragraph.</p> 

     <script> 
      $(document).ready(function() { 
       alert("Hello world from ajax html page"); 
      }); 
     </script> 
    </div> 
</body> 
</html> 

回答

0

我認爲你侵犯了 「同源策略」 http://en.wikipedia.org/wiki/Same_origin_policy 因此,如果這是正確的問題,這應該解釋爲什麼。

「在計算中,同源策略是許多瀏覽器端編程語言(如JavaScript)的重要安全概念,該策略允許在源自同一站點的頁面上運行腳本 - 一個方案,主機名和端口號[1] - 訪問彼此的DOM沒有特定限制,但是阻止在不同站點上訪問DOM [1]同源策略也適用於XMLHttpRequest和robots.txt。[2]「

的概念和解決方案也在這篇文章由Ben埃弗拉 How to call external url in jquery?

解釋。 。 。

JSONP是他的建議解決方案: 「不使用JSONP你打的是從獲取任何數據傳回堵的XmlHttpRequest的同源策略」,所以你需要給它相同的協議和主機,以便它可以信任加載這個。


如果你發現的時候,它聽起來就像你可能面臨的一個非常標準的問題與AJAX以直觀的方式沒有要求的東西,所以也許需要一些時間來看看異步調用是如何工作的。

在其他帖子中有幾個好的AJAX調用答案。 How do I return the response from an asynchronous call?

FelixKing在這裏給出了兩個解決方案,解釋問題以及如何以正確的方式編碼解決方案。

此外,如果沒有這些的工作,你可以嘗試將誤差函數,看它會告訴你:

 success : function(response, textStatus, xhr) { 
     var resultData = '<div>' + response + '</div>'; 
     var todo = $(resultData).find("#todo"); 
     console.log(todo.text()); 
     $('#users').html(todo); 
    }, 
    error: function(e) { 
     alert('Error: '+e); 
    } 

希望這有助於!

相關問題