2011-05-03 31 views
1

我得到的代碼從一個網站,類似的信息(文件名:的index.php):阿賈克斯如何讓功能參數,例如html的(HTML)

<html> 
<body> 

<div class="menu" title="example">Click here to change the content from a html file</div> 
<div id="content"></div> 

<script> 
$(".menu").click(function() { 
    var page = $(this).attr("title"); 
    $.post("content.php", {"page": page}, function(html){ $("#content").html(html);}); 
    }); 
</script> 

</body> 
</html> 

在 「content.php」:

<?php 
ob_start(); 
include 'index.php'; 
ob_end_clean(); 

$page = $_POST['page']; 

$file = $page."html"; 
include($file); 

?> 

它適用於簡單的$頁面「html」文件。但是,如果我在$ page中加入了一些複雜的JavaScript,「html」,它不起作用。我想知道爲什麼,如何以及什麼是.html(html)?我無法找到任何關於傳遞參數的參考信息,如html。什麼是「html」?

+0

支票本,http://stackoverflow.com/questions/4619668/executing-script-inside-div-retrieved-by-ajax – 2011-05-05 22:16:59

回答

0
$.post("content.php", {"page": page}, function(html) { 
    $("#content").html(html); 
}); 

htmlfunction(html)是從服務器接收輸出的任意名稱。所以,$("#content").html(html);插入$('#content')該信息。

0

它只是一個變量,它包含對ajax post請求的響應。

0

$(選擇)的.html(HTML)是jQuery的用於

  1. 選擇
  2. 設置其內部的html稱爲HTML

在可變匹配 「選擇」 的項目你例如,名爲html的變量是傳回給$ .post調用的成功函數的參數。所以$ .post與服務器對話,獲取頁面,然後將內容加載到id = content的div中。所以對於更復雜的頁面,也許你沒有正確格式化返回。在這個函數中做一個alert(html)來調試html設置的真正簡單的方法。在Firebug或Chrome的開發者控制檯中設置一個斷點來深入挖掘。代碼

0
function(html){ $("#content").html(html);} 

部分分配從調用返回到您的content.php與ID的現有元素設置爲「內容」的內容。你肯定可以將JavaScript函數加載到DOM中,或者在它們被加載到「content」div時執行它們。你得到什麼樣的錯誤?

我建議把警報在回調,如:

function(html){ **alert(html);** $("#content").html(html);} 
+0

如果我通過我的$ page.html代碼複製到

,它工作正常。 – wordpressquestion 2011-05-03 04:47:29

+0

嘗試使用像Firebug或類似的調試器。不知道人們可能會幫助很多沒有看到代碼/ HTML這是你打破它。 – 2011-05-03 04:58:22

0

是否正確地達到了響應?如果您使用console.log(html)或alert(html),它是您正在尋找的內容嗎?

不知道它是否有任何區別,但如果你沒有得到響應,你可以使用echo $ html替換include($ html)到PHP中嗎?

+0

是的,我將

中的「$」文件替換爲「html」文件,它工作正常。警報(html)只是顯示整個文件的代碼。 – wordpressquestion 2011-05-03 04:57:41

0

謝謝你的回答!我現在明白部分:

  • function(html){ $("#content").html(html);}

    參數 「HTML」 不是 默認。這是一樣的:

    function(new_content){ $("#content").html(new_content);}

  • 對於複雜的$頁 「HTML」,我 簡單的代碼更改爲:

    $.get(page+'.html', function(new_page) {$('#content').html(new_page);});

    它工作正常。不過我還是百思不得其解,爲什麼我不能加載複雜的JavaScript文件 使用:

    $.post("content.php", {"page": page}, function(html){$("#content").html(html);});

+0

什麼是「複雜的Javascript」? – morgar 2011-05-04 04:44:51

0

只是爲了解釋.html(html)

也許,如果它是這樣寫的,你可以更好地理解。

.html('<p>Some returned html in here</p>')

括號內的html表示返回的HTML