2016-11-19 29 views
0

我希望用戶填寫表單並將輸入發送到SAME文件中的PHP腳本。澄清:表單,ajax腳本和PHP都在同一個文件中。我意識到將PHP分成它自己的request.php文件是最佳做法,但我真的想讓這種方法起作用。我有以下代碼:Ajax發佈到同一頁面返回數據和整個文件

PHP

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

阿賈克斯

$(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返回整個文件的其他文章,但不是當它在同一頁面中調用時。

+0

您需要構建您的PHP代碼,以便它可以識別何時它接收到AJAX請求並僅返回數組。 –

+0

在單獨的文件中有一個php腳本,腳本和模板好多了。 – Mardzis

回答

3

你必須exit終止進一步執行。例如:

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

也沒有其他輸出高於這一點 – charlietfl