2012-07-25 97 views
1

我有一個小問題,我需要發送一個ajax請求到一個文件。 這裏是我的HTML文件(index.html的)發送喜歡/不喜歡用ajax數據庫

<a id="like" href="./?act=like&id=24" title="Nobody likes this post!">Like</a> &middot; <a id="dislike" href="./?act=dislike&id=24" title="Nobody dislikes this post!">Dislike</a> 

而且我like.php文件:

<?php 
if(!is_logged()) { 
    header("Location: ./?act=Home"); 
die(); 
} 
$uid = $user['id']; 
$id = $_GET['id']; 
if(isset($id)) { 
    $query = mysql_query("INSERT INTO ld (auth_id,post_id,val) 
          VALUES ('".$uid."','".$id."','1')"); 
    if($query) { 
    header("Location: ".$_SERVER['HTTP_REFERER']); 
    } else { 
    echo "Contatta l'amministratore riportando l'errore 101"; 
    } 
} else { 
header("Location: ./?act=Home"); 
} 
?> 

而我的 「LD」 的表:

== Struttura della tabella ld 

|------ 
|Campo  |Tipo  |Null|Predefinito 
|------ 
|//**id**//|int(5) |No | 
|auth_id |varchar(5)|No | 
|post_id |varchar(5)|No | 
|val  |varchar(1)|No | 
== Dump dei dati per la tabella ld 

|5|4|1|1 
|6|4|1|1 
|7|4|1|1 
|8|4|1|1 
|9|4|1|1 
|10|4|1|1 
|12|4|1|1 
|13|4|1|1 
|14|4|1|2 
|20|4|15|1 
|23|5|17|1 
|29|4|17|1 
|30|4|18|1 
== Struttura della tabella ld 

|------ 
|Campo  |Tipo  |Null|Predefinito 
|------ 
|//**id**//|int(5) |No | 
|auth_id |varchar(5)|No | 
|post_id |varchar(5)|No | 
|val  |varchar(1)|No | 

我真不」不知道如何發送ajax請求,而且我也試圖學習ajax,但沒辦法,我無法理解它。

+3

在哪裏你的JavaScript? – 2012-07-25 15:52:25

+1

你看過jQuery的ajax輔助方法嗎?它使得它更容易! – 2012-07-25 15:53:44

+0

我甚至不知道如何編碼ajax請求:/ – Denn 2012-07-25 15:59:27

回答

2

你應該使用jQuery,它其實很簡單。首先包括這個HTML文件中:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

然後添加此,它被稱爲「聽者」,它在這種情況下,點擊您的鏈接時要注重:

// A # is used since we are using an id to get the element 
// A . is used for a class, but we are using the id at the moment 
$('#like').click(function(e) { // We assign a click listner with a handler (a function) 
    e.preventDefault(); // run this to stop it from going to a new page automatically 
    $.get('./', {'act' : 'like', 'id' : $(this).attr('data')}, function(e) { 
    // Handle success here 
    }, 'json'); // expecting a json object back by using echo json_encode(array(...)) in PHP 
}); 

隨着我的榜樣您需要將html更改爲:

<a id="like" href="" data="24" title="Nobody likes this post!">Like</a> 

然後您可以用不喜歡的方法做同樣的事情。作爲我在$ .get中做的第二個參數{}是一個javascript數組作爲fyi。這裏是我jQuery的文檔中使用的$不用彷徨方法:http://api.jquery.com/jQuery.get/

有關Ajax做什麼以及它是如何工作的看看這個文章:http://www.webdesignerdepot.com/2008/11/how-ajax-works/

隨意問任何澄清

+0

非常感謝你,這是我想要做的!還有一個問題:爲了實時獲得喜歡的數量,我必須再次使用Ajax嗎? – Denn 2012-07-25 16:25:39

+1

這是處理程序事件的一部分(function(e){})所以假設有X個喜歡,現在應該有X + 1,但也有可能有10個人喜歡它,所以在後端腳本中,當您更新當前人的#號後,您應該獲得喜歡的數量。然後返回這個數字並使用處理程序來更改顯示的數字。如果你希望它不斷地更新而不需要喜歡/不喜歡,那麼你需要設置一個計時器腳本來運行每X分鐘來訪問另一個腳本,以獲得每個事物的喜歡數量。 – MasterGberry 2012-07-25 16:31:31

+0

非常感謝,非常感謝:) – Denn 2012-07-25 16:44:15