我希望用户填写表单并将输入发送到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返回整个文件的帖子,但是当它在同一页面中调用时却没有。
答案 0 :(得分:3)
您必须exit
终止进一步的执行。例如:
<?php //Place it in the top most of your file.
if(isset($_POST)){
//perform your operations here
exit;
}
?>
<html>
...
</html>