PHP + Jquery - передать значение через ajax в php и проверить переменную - PullRequest
4 голосов
/ 18 ноября 2010

Я не могу заставить работать следующий PHP + jQuery - все, что я хочу от скрипта, - это передать значение через ajax и заставить php захватить его, проверить его на совпадение и добавить 1 к баллу.

Это код, который я написал:

<?php
$score = "1";

$userAnswer = $_POST['name'];

if ($_POST['name'] == "145"){
    $score++;
}else{
    //Do nothing
}

echo $score;

?>


<script type="text/javascript">

$(document).ready(function() {

    $("#raaagh").click(function(){

    var value = "145";

    alert(value);

    $.ajax({
        url: 'processing.php', //This is the current doc
        type: "POST",
        data: ({name: value}),
        success: function(){
            location.reload();
       }
    });


    });
});

</script>

<p id="raaagh">Ajax Away</p>

Спасибо за помощь, я изменил GET на POST в обоих случаях, и без радости - что-то не так.

Ответы [ 5 ]

17 голосов
/ 18 ноября 2010

Прежде всего: не возвращайтесь в темные века ... не используйте один и тот же сценарий для генерации HTML и ответа на запрос ajax.

Я не могу понять, что вы пытаетесь сделать ... Позвольте мне изменить ваш код, чтобы он хотя бы имел некоторый смысл и документировал происходящее. Кажется, проблема в том, что вы вызываете location.reload из вашего обработчика успеха.

// ajax.php - выводит 2, если параметр имени равен 145, в противном случае 1 (????)

<?php
$score = "1";    
$userAnswer = $_POST['name'];    
if ($_POST['name'] == "145"){
    $score++;
}       
echo $score;    
?>

// test.html

<script type="text/javascript">  
$(document).ready(function() {    
    $("#raaagh").click(function(){    
        $.ajax({
            url: 'ajax.php', //This is the current doc
            type: "POST",
            data: ({name: 145}),
            success: function(data){
                // Why were you reloading the page? This is probably your bug
                // location.reload();

                // Replace the content of the clicked paragraph
                // with the result from the ajax call
                $("#raaagh").html(data);
            }
        });        
    });
});

</script>

<p id="raaagh">Ajax Away</p>
2 голосов
/ 18 ноября 2010

Вы используете POST в своем jQuery, но вы пытаетесь получить GET в своем php.

Кстати, хорошей практикой является проверка, установлена ​​ли переменная GET / POST, перед ее чтением.используя функцию isset () .

0 голосов
/ 18 ноября 2010

Проблема в том, что вы используете jQuery для POST вашего значения, но вы читаете его с помощью GET.

Вы сможете исправить свою проблему, изменив $ _GET ['name'] на $ _POST[ 'имя']

0 голосов
/ 18 ноября 2010

Вы отправляете данные с помощью Ajax POST, но пытаетесь прочитать их из GET. Либо используйте type: "GET" в вашем вызове Ajax, либо $_POST['name'] в вашем PHP.

0 голосов
/ 18 ноября 2010

Замените $_GET на $_POST и вот, пожалуйста.По сути, POST и GET - это два разных способа передачи переменных в скрипт.Метод get в php также можно прикрепить в конце URL: script.php?variable=value, и его действительно легко взломать.Хотя метод post может быть передан с помощью форм или вызовов ajax, он довольно безопасен, по крайней мере, больше, чем get.Также я бы посоветовал вам проверить, какая переменная GET или POST установлена ​​перед вызовом, чтобы вы могли предотвратить глупые ошибки уведомления.

Просто используйте следующий код:

if (isset($_POST['var']) and !empty($_POST['var'])) { // do something } 

Вы также можете удалить часть скрипта

}else{
// do nothing
}

, так как предложение else не всегда необходимо.

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