首先,我不是一個程序員,對此我相對缺乏經驗......我試圖在我的網站上使用星級評分系統,我從this鏈接下載了腳本。當我在我的瀏覽器中預覽它時,我會讓它們正確顯示在我的網站上,但是當您點擊某個星標來評分它時,它不會在我的數據庫中記錄該評分。使用螢火蟲我想我已經追蹤到JavaScript函數,通過ajax請求傳輸數據onclick。當我點擊一個星星時,我在螢火蟲中得到的迴應是「你不應該試圖以這種方式訪問這個文件。」如果我註釋掉if/die語句,我在firebug中得到的迴應是未定義的索引,並且它列出了'item','rating','classes'。我下載的腳本的原始ajax請求代碼位於底部代碼示例中。我已經閱讀過關於如何使用xmlhttprequest提及的ajax請求的所有地方,所以我希望切換到可以消除此問題的方法。我現在還沒有得到任何語法錯誤,所以我想我已經正確地格式化了xml請求。你們都在想什麼?先謝謝你。如何使用xmlhttprequest將值作爲變量傳輸?
function RateItem(varItemId, varRate)
{
var varOrigClassName = document.getElementById(varItemId).className;
var request;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
request=new XMLHttpRequest();
}
else
{// code for IE6, IE5
request=new ActiveXObject("Microsoft.XMLHTTP");
}
request.open("POST","ajax.rate.item.php",true);
//request.onload= ReloadRating;
request.setRequestHeader('item','varItemId');
request.setRequestHeader('rating','varRate');
request.setRequestHeader('classes','varOrigClassName');
request.send('item','rating','classes');
}
ajax.rate.item.php文件
<?php
require_once("classes/include.all.php");
// Check that the data was sent
if (sizeof($_POST) == 0
|| $_POST['item'] == null
|| strlen(trim($_POST['item'])) == 0
|| $_POST['rating'] == null
|| strlen(trim($_POST['rating'])) == 0
|| is_numeric($_POST['rating'])
|| $_POST['classes'] == null
|| strlen(trim($_POST['classes'])) == 0)
{
die("You shouldn't be attempting to access this file in this manner.");
}
echo Rating::RateItem($_POST['item'],$_POST['rating'],$_POST['classes']);
?>
原始Ajax請求
function RateItem(varItemId, varRating)
{
var varOrigClassName = document.getElementById(varItemId).className;
// Retrieve Ajax Feeds
new Ajax.Request('ajax.rate.item.php',
{
method: 'post',
parameters: {item: varItemId, rating: varRating, classes: varOrigClassName},
onSuccess: ReloadRating,
onFailure: RatingError
}
);
}