Ajax问题

时间:2011-09-01 14:41:32

标签: php ajax json

如何正确使用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);
        }
    }
}

3 个答案:

答案 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调用存在问题。让我知道你的结果。