Ajax发布到同一页面返回数据和整个文件

时间:2016-11-19 17:56:45

标签: php jquery ajax

我希望用户填写表单并将输入发送到SAME文件中的PHP脚本。澄清一下:表单,ajax脚本和PHP都在同一个文件中。我意识到将PHP拆分为自己的request.php文件是最好的做法,但我真的想让这个方法起作用。我有以下代码:

PHP

$country = $_POST['ccode'];  
$postal = $_POST['pcode'];  

Ajax

$( document ).ready(function() {
 $('#quick-quote').submit(function(e){
        e.preventDefault();
         $.ajax({
           url: "same-page.php",
           method: 'POST',
           data: {
             ccode: $('#country').val(),
             pcode: $('#postal').val()
           },
           dataType: 'text',
           success: function(data){
             console.log(data);
           },
           error: function(data){
             console.log("ajax failure");
           }
         });
       });
      });

HTML

<form id="quick-quote" class="" action="" method="post">
  <label>Country</label>
  <select id="country" name="country">
    <option value="AU">Australia</option>
  </select>
  <label>Postal Code</label>
  <input id="postal" type="text" name="postal" value="">
  <input id="submit" type="submit" name="" value="submit">
</form>

执行ajax时,控制台打印出:

 Array
(
    [ccode] => AU
    [pcode] => 3000
)

后面是ENTIRE文件的内容(PHP,Jquery,HTML)。

我已经测试了一个单独的php文件,并将ajaxed值发布到它,它运行正常。但我真的希望这一切都发生在同一个文件中(如果可能的话)。所以我的问题是:如何解析ajax帖子中的数组?或者更好的是,我怎么才能发布相关的键值对而不是我文件的其余部分。我看过其他关于ajax返回整个文件的帖子,但是当它在同一页面中调用时却没有。

1 个答案:

答案 0 :(得分:3)

您必须exit终止进一步的执行。例如:

<?php //Place it in the top most of your file.
if(isset($_POST)){
    //perform your operations here
    exit;
}
?>
<html>
...
</html>