【发布时间】:2011-02-14 07:16:08
【问题描述】:
我正在本地 Apache 2.2 服务器上使用 PHP 5.3 测试 jQuery ajax post 方法(在这方面完全是新的)。这是文件,都在同一个文件夹中。
html body(head 中包含 jQuery 库):
<form id="postForm" method="post">
<label for="name">Input Name</label>
<input type="text" name="name" id="name" /><br />
<label for="age">Input Age</label>
<input type="text" name="age" id="age" /><br />
<input type="submit" value="Submit" id="submitBtn" />
</form>
<div id="resultDisplay"></div>
<script src="queryRequest.js"></script>
queryRequest.js
$(document).ready(function(){
$('#s').focus();
$('#postForm').submit(function(){
var name = $('#name').val();
var age = $('#age').val();
var URL = "post.php";
$.ajax({
type:'POST',
url: URL,
datatype:'json',
data:{'name': name ,'age': age},
success: function(data){
$('#resultDisplay').append("Value returned.<br />name: "+data.name+" age: "+data.age);
},
error: function() {
$('resultDisplay').append("ERROR!")
}
});
});
});
post.php
<?php
$name = $_POST['name'];
$age = $_POST['age'];
$return = array('name' => $name, 'age' => $age);
echo json_encode($return);
?>
输入这两个字段并按下'提交'后,调用成功方法,附加文本,但ajax post返回的值未定义。
不到一秒钟后,文本字段被清空,附加到 div 的文本消失了。不过,这似乎不是页面刷新,因为没有空页面闪烁。
这里发生了什么?我确定这是一个愚蠢的错误,但 Firebug 并没有告诉我任何事情。
更新:
查看Firebug Net显示POST返回状态为200,但返回3次预期的JSON对象:
{"name":"asd","age":"123"}{"name":"asd","age":"123"}{"name":"asd","age":"123"}
【问题讨论】:
-
把
exit放在这里怎么样 echojson_encode($return); exit;?> -
@Shakti Singh:那不会有任何好处...
echo已经是最后一条指令了 -
刚刚编辑了我的答案。在您的代码中发现了一个错字,导致它无法在我的开发环境中工作。