Ответ после редактирования вопроса:
$ _ POST - это массив, отправленный запросом HTTP Post.поэтому, если запрос к странице с именем test.php или чем-то еще не является HTTP POST-запросом, массив $ _POST будет пустым.но массив $ _GET может содержать некоторые данные, если вы их отправили.и переход на страницу является запросом на получение этой страницы, если вы не использовали форму с method = "post".так что то, что вы делаете с вызовом ajax, правильно.но переход к test.php вручную без формы с методом post не приведет к заполнению массива $ _POST.потому что, когда вы делаете Ajax-вызов, он выполняется, он просто правильно выполняет пост-вызов, и все в порядке, но когда вы переходите на эту страницу, это запрос get и он не заполняет массив $ _POST.для этого вам совсем не нужен ajax.Вы можете иметь эту форму
<form method="POST" action="test.php">
<input type="text" name="data" value="some data" />
<input type="submit" value="submit" />
</form>
, так что либо вы используете ajax, и обрабатываете все, что вы хотите обработать в методе успеха ajax.или используйте форму и отправьте запрос на страницу и обработайте его там.
ответ на вопрос до редактирования
Если они находятся в одном файле, он выигралЭто не работает , потому что когда файл загружает $ _POST ['data'], он вообще не существует, а после запуска вызова ajax он существует внутри этого вызова, а не в окне браузера.
так что вы можете проверить, существует ли $ _POST ['data'], поэтому вы отправляете его из вызова ajax, чтобы вы могли вернуть его и использовать в своей функции успеха ajax.
заключение:
вы не можете поместить их в один и тот же файл и ожидать, что ajax загрузится до фактического php. сначала загрузит весь файл, затем запустит ajax . неопределенный индекс с сервера , прежде чем вы даже увидите HTML-страницу.
Решение может быть следующим:
Файл с вашими функциями html и ajax index.html
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
$.ajax({
type: 'post',
url: 'loo.php',
data: { data: 'some data' },
success: function(response,w) {
// use the response here
console.log(w);
}
});
</script>
и еще один с вашей логикой loo.php
<?php
header("Content-Type: text/plain"); // if you want to return a plain text
// if you want to return json it could be header('Content-type: application/json');
echo isset($_POST['data'])? $_POST['data']: ''
?>