Я не могу получить следующий 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 в обоих случаях, и никакой радости – что-то еще не так.
Прежде всего: не возвращайтесь в темные времена … не используйте тот же скрипт для генерации 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>
Вы используете POST в своем jQuery, но вы пытаетесь получить GET в php.
Кстати, это хорошая практика, чтобы проверить, установлена ли перед GET / POST переменная. используя функцию isset () .
Вы отправляете данные с помощью Ajax POST, но пытаетесь прочитать его из GET. Или используйте type: "GET"
в вашем вызове Ajax или $_POST['name']
в вашем PHP.
Проблема в том, что вы используете jQuery для POST вашего значения, но вы читаете его с помощью GET.
Вы можете исправить свою проблему, изменив $ _GET ['name'] на $ _POST ['name']
Замените $_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 это не обязательно всегда.