JQuery и PHP оцените меня сценарий? - PullRequest
0 голосов
/ 05 января 2010

Я нашел этот сценарий оценки на [http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery#Rate_me:_Using_Ajax], и я не могу заставить его работать, как в примере на http://jquery.bassistance.de/example-rateme.html, когда я нажимаю на оценку, ничего не происходит.

Как я могу решить эту проблему?


Вот полный скрипт ниже.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>jQuery Starterkit</title>

<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
    // generate markup
    var ratingMarkup = ["Please rate: "];
    for(var i=1; i <= 5; i++) {
        ratingMarkup[ratingMarkup.length] = "<a href='#'>" + i + "</a> ";
    }
    var container = $("#rating");
    // add markup to container
    container.html(ratingMarkup.join(''));

    // add click handlers
    container.find("a").click(function(e) {
        e.preventDefault();
        // send requests
        $.post("starterkit/rate.php", {rating: $(this).html()}, function(xml) {
            // format result
            var result = [
                "Thanks for rating, current average: ",
                $("average", xml).text(),
                ", number of votes: ",
                $("count", xml).text()
            ];
            // output result
            $("#rating").html(result.join(''));
        } );
    });
});
</script>

</head>
<body>
<h1>jQuery Getting Started Example - rate me</h1>

<?php

define('STORE', 'ratings.dat');

function put_contents($file,$content) {
    $f = fopen($file,"w");
    fwrite($f,$content);
    fclose($f);
}

if(isset($_REQUEST["rating"])) {
    $rating = $_REQUEST["rating"];
    $storedRatings = unserialize(file_get_contents(STORE));
    $storedRatings[] = $rating;
    put_contents(STORE, serialize($storedRatings));
    $average = round(array_sum($storedRatings) / count($storedRatings), 2);
    $count = count($storedRatings);
    $xml = "<ratings><average>$average</average><count>$count</count></ratings>";
    header('Content-type: text/xml'); 
    echo $xml;
}

?>

<p>This example demonstrate basic use of AJAX. Click one of the links below to rate. The
number of rating and the average rating will be returned from the serverside script and displayed.</p>

<div id="rating">Container</div>

</body>
</html>

Ответы [ 2 ]

2 голосов
/ 25 сентября 2010

o Проверьте jsquery. Вопрос jquery действителен - убедитесь, что вы указываете на допустимый исходный файл jquery (для меня это "jquery-1.4.2.js" в текущем каталоге .

o Проверьте расположение файла rate.php. Пример-rateme.html ожидает найти rate.php в папке starterkit. Все поставляемые файлы находятся в одной папке, поэтому исправьте это.

o php-сессии должны быть включены. php по умолчанию, который я установил на своем тестовом сервере на моем компьютере, использует ini-файл с отключенным флагом session.auto_start (http://www.learnphp -tutorial .com / Sessions.cfm ).

o Перезагрузите сервер, очистите кэши и принесите в жертву маленькое животное. Я немного шучу здесь, но я потратил много времени на поиск проблем, которые исчезли через некоторое время, потому что, я подозреваю, , Я запускал старую версию файла (ов), которые, по моему мнению, были обновлены.

1 голос
/ 05 января 2010

Используйте Firebug, чтобы получить / увидеть любые ошибки JavaScript ... Вы также можете проверить консоль ошибок в Firefox. Не зная, что происходит (или нет), трудно решить проблему.

Глупый вопрос, а у вас jquery.js на сервере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...