Я пытаюсь опубликовать некоторые данные формы для себя без успеха. Мой код выглядит следующим образом
<html> <title>Post to self</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script> <script type="text/javascript"> $(document).ready(function () { $('.x-button').live("click", function () { $.ajax({ type: "POST", url: "self.php", data: $(".aj").serialize(), success: function (data) { alert("Data Loaded:"); } }); }); }); </script> </head> <body> <?php if(isset($_POST['submit'])) { echo $_POST['firstname']; } ?> <form name="input" action="" class="aj" method="post"> <article> <label>Firstname</label> <input type="text" name="firstname" value="Ed" class="x-input" /> </article> <article> <label>Lastname</label> <input type="text" name="lastname" value="Doe" class="x-input" /> </article> <article> <label>City</label> <input type="text" name="city" value="London" class="x-input" /> </article> <input type="submit" value="Update Options" class="x-button" /> </form> </body> </html>
При использовании <form name="test" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
в plain php и html он работает, но я не могу его получить для работы с jquery.
Конечно, вы не хотите включать всю страницу в текст ответа, поэтому вам нужна инструкция, если запрашивается ajax
<?php /* AJAX check */ if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { if(isset($_POST)) { print_r($_POST); } }else{ ?> <html> <title>Post to self</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script> <script type="text/javascript"> $(document).ready(function () { $('.x-button').live("click", function () { $.ajax({ type: "POST", url: "self.php", data: $(".aj").serialize(), success: function (data) { alert("Data Loaded:"); } }); }); }); </script> </head> <body> <form name="input" action="" class="aj" method="post"> <article> <label>Firstname</label> <input type="text" name="firstname" value="Ed" class="x-input" /> </article> <article> <label>Lastname</label> <input type="text" name="lastname" value="Doe" class="x-input" /> </article> <article> <label>City</label> <input type="text" name="city" value="London" class="x-input" /> </article> <input type="submit" value="Update Options" class="x-button" /> </form> </body> </html> <?php }?>
вы смешиваете два подхода в целом.
<form id="myform" action="" > ..... </form>
Чтобы отправить запрос ajax на ту же страницу, вы можете сохранить параметр url пустым / удаленным
ПЫТАТЬСЯ
<script type="text/javascript"> $(document).ready(function () { $('.x-button').live("click", function () { $.post({ data: $('form#myform').serialize(), success: function (data) { alert("Data Loaded:"); } }); }); }); </script>
добавить return false;
в конце встроенной функции javascript, чтобы избежать отправки формы «обычным» способом