2014-01-25 51 views
1

首先,我不是一個程序員,對此我相對缺乏經驗......我試圖在我的網站上使用星級評分系統,我從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 
    } 
); 
} 

回答

0

要使用POST方法發送參數,可以你可以試試這個方法:

xmlhttp.open("POST","ajax.rate.item.php",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("item=" + varItemI + "&rating=" + varRate + "&classes=" + varOrigClassName); 

Source MDN

相關問題