#php #javascript #ajax
#php #javascript #ajax
Вопрос:
Я хочу, чтобы мой php-скрипт захватывал переменные get или post. То есть независимо от того, изменил ли я свой метод на get или post, php-скрипт должен иметь возможность захватывать переменные в одной и той же переменной php. Как мне этого добиться?
HTML-код
<script type="text/javascript">
$(function(){
$("input[type=submit]").click(function(){
//alert($(this).parents("form").serialize());
$.ajax({
type: "get",
url: 'file.php',
data: $(this).parents("form").serialize(),
complete: function(data){
} ,
success:function(data) {
alert(data);
}
});
return false;
})
})
</script>
file.php Код
<?php
$name = $_POST["file"]?$_POST["file"]:$_GET["file"];
echo $_POST["file"];
?>
Приведенный выше код не захватывает переменные post.Как мне захватить переменные post?
Комментарии:
1. Почему вы не печатаете
$name
?
Ответ №1:
Используйте $_REQUEST
суперглобальный:
$name = $_REQUEST['file'];
Ответ №2:
если вы хотите отфильтровать то, что делается с помощью a POST
или что делается с помощью a GET
, используйте это:
//for the POST method:
if($_SERVER['REQUEST_METHOD'] === 'POST') {
//here get the variables:
$yourVar = $_POST['yourVar'];
}
//for the GET method:
if($_SERVER['REQUEST_METHOD'] === 'GET') {
//here get the variables:
$yourVar = $_GET['yourVar'];
}
в противном случае используйте _REQUEST:
$yourVar = $_REQUEST['yourVar'];
Ответ №3:
Я всегда использовал функцию, которую я написал:
function getGP($varname) {
if (isset($_POST[$varname])) {
return $_POST[$varname];
} else {
return $_GET[$varname];
}
}
Тогда просто:
$name = getGP('file');
Комментарии:
1. Что ж, хотя это удобно, это не самая умная вещь.
2. Эту функцию можно улучшить с помощью тернарного оператора, например функции getGP($var) { return isset($_POST[$var])? $_POST[$var] : $_GET[$var]; }
Ответ №4:
$_REQUEST
захватывает обе $_GET
$_POST
переменные и: http://php.net/manual/en/reserved.variables.request.php
Ответ №5:
Использовать $_REQUEST
Ответ №6:
использование $_REQUEST