如何正确使用ajax?谢谢你的帮助!
这是表单代码
<form action="" method="post">
<p>Search for a name:</p>
<p><input type="text" name="name" id="name" /></p>
<input type="submit" name="submit" id="submit" value="Search Name" />
</form>
<div id="output"></div>
和它下面的javascript
$("input#submit").click(function(){
var name_val = $("input#name").val();
$.ajax({
type: "POST",
url: "select.php",
dataType: "json",
data: {
name: name_val
},
success: function(data){
if(data.error == true){
$("#output").append("<p>"+ name_value +" is on the list.</p>");
} else {
$("#output").append("<p>"+ name_value +" is not the list.</p>");
}
}
});
})
</script>
这是select.php
中的代码if(isset($_POST['submit'])){
$name = $_POST['name'];
$sql = "SELECT * FROM persons WHERE FirstName = '{$name}'";
$result = mysql_query($sql, $con);
if(!$result){
die("Database query failed: ". mysql_error());
}
while($row = mysql_fetch_array($result)){
if(in_array($name, $row)){
$return['success'] = true;
echo json_encode($return);
} else {
$return['success'] = false;
echo json_encode($return);
}
}
}
答案 0 :(得分:1)
而不是$("input#submit").click(function(){...
做
$("form#formID").submit(function(){
$.ajax({
type: "POST",
url: "select.php",
dataType: "json",
data: $(this.serialize(),
success: function(data){
if(data.error == true){
$("#output").append("<p>"+ name_value +" is on the list.</p>");
} else {
$("#output").append("<p>"+ name_value +" is not the list.</p>");
}
}
});
return false; //remember this
});
答案 1 :(得分:0)
在ajax中包含错误捕获器通常很有帮助:
$.ajax({
type: "POST",
url: "select.php",
dataType: "json",
data: {
name: name_val
},
success: function(data){
if(data.error == true){
$("#output").append("<p>"+ name_value +" is on the list.</p>");
} else {
$("#output").append("<p>"+ name_value +" is not the list.</p>");
}
},
error: function(x,e){
alert(x.readyState + " " + x.status + " " + e.msg);
}
});
答案 2 :(得分:0)
根据您的代码,您不需要if(isset($_POST['submit']))
。
你有什么结果?什么从jQuery返回。
尝试在PHP文件中使用它:
$name = $_POST['name'];
$sql = "SELECT * FROM persons WHERE FirstName = '{$name}'";
$result = mysql_query($sql, $con);
if(!$result){
die("Database query failed: ". mysql_error());
}
while($row = mysql_fetch_array($result)){
if(in_array($name, $row)){
$return['success'] = true;
echo json_encode($return);
} else {
$return['success'] = false;
echo json_encode($return);
}
}
编辑:
您不应该需要if(isset($_POST['submit']))
。原因是,isset正在检查提交是否已设置。这种方法通常在将表单提交到同一页面时使用。你不需要这个,因为你已经用jQuery检查了它,而且你也没有通过你的ajax发布它。
要查看调用是否正常,请问为什么不将它放在PHP中:
if(in_array($name, $row)){
echo 'success';
} else {
echo 'fail';
}
然后为你ajax:
if(data == "success"){
$("#output").append("<p>"+ name_value +" is on the list.</p>");
} else {
$("#output").append("<p>"+ name_value +" is not the list.</p>");
}
如果这样可行,则表明您的ajax调用存在问题。让我知道你的结果。