2012-01-07 61 views
1

我對我的服務器端語言使用PHP,並且有一個返回結果的表單。我目前正在使用jquery來檢索結果並更新頁面的一部分。這可以做到沒有jQuery?如果有,有什麼好的例子嗎?我可以只加載一部分沒有Java腳本的頁面嗎?

我當前的jQuery代碼看起來是這樣的:

$.post("search_basic_results.php", $("#profile_form_id").serialize(), 
    function(data) {  
     $('#search_results').html(data); 
    }); 
}); 

我試圖找到一個Java腳本自由選擇,但我怕我需要重新加載整個頁面。

回答

3

這可以做到沒有jQuery嗎?

是的。 jQuery只是一個庫。它提供了輔助函數來處理代碼較少的事情,並消除瀏覽器之間的差異。

還有其他庫可供選擇(我喜歡YUI3),並且jQuery的源代碼可用,所以如果您願意,您可以在幕後看到它在做什麼。

我試圖找到一個JavaScript的免費替代品

你不能沒有客戶端編程編輯在瀏覽器中的文件。 JavaScript是操縱瀏覽器DOM的唯一受到廣泛支持的語言。

雖然你可以使用iframe

+0

如果我不想繼續重新加載我的標題和搜索表單,這是推薦的方法嗎? – Paul 2012-01-07 17:44:20

+0

如果它只是一個標題和搜索表單,那麼推薦的方法是重新加載它們。它們將包含相對較少量的HTML(其他所有內容都可以緩存),並且成本(包括打破書籤,鏈接共享等)嚴重超過了這些好處。 – Quentin 2012-01-07 17:47:45

+0

不幸的是,我的頭文件每次調用時都會加載登錄用戶的圖像。我假設這不會被緩存,並且每次都需要調用數據庫。看起來與您在Twitter上看到的標題類似。看起來他們可能會使用iframe來保存頭... – Paul 2012-01-07 17:55:46

1

這可以做到沒有jQuery嗎?

當然,你可以使用普通的舊AJAX AJAX。你將不得不寫一點代碼。但爲什麼你會這樣做,當你有一個跨瀏覽器工作替代jQuery?

就沒有javascript操作DOM而言,如果不重新加載整個頁面,這是無法完成的。

1

重新加載頁面時出現了什麼問題?

if (count($_POST) == 0) 
{ 
    // var initialisation 
    $input_one = ''; 
    $input_two = ''; 
    // result wont be displaied 
    $display_search = false; 
} 
else 
{ 
    // this bit keeps track of the input fields 
    $input_one = $_POST['input_one']; 
    $input_two = $_POST['input_two']; 
    // result will be displayed 
    $display_search = true; 
    // do some stuff that search_basic_results.php would do 
} 
?> 
<form action="" method="post"> 
    <input name="input_one" type="text" value="<?=$input_one?>"/> 
    <input name="input_two" type="text" value="<?=$input_two?>"/> 
</form> 
<? if ($display search == true): ?> 
<!-- display stuff you want to display here/$('#search_results').html(data); equivalent --> 
<? endif ?> 
+0

不是一個真正的問題,我只是喜歡這樣一個事實,即每次需要更新頁面時,我的頁眉和搜索表單都不會閃爍。看起來有點平滑,但不幸的是,如果Java腳本被禁用,則不起作用。 – Paul 2012-01-07 17:43:10

+0

您可以檢查瀏覽器是否可以使用JS,如果它重定向到使用JS的頁面。但個人而言,我寧願看到我的瀏覽器閃光幾分之一秒:) – Uboonto 2012-01-07 17:48:33

2

沒有Javascript它是不可能的。

這是舊學校的Javascript代碼。

if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.open("POST","search_basic_results.php",false); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 
相關問題