2011-09-01 29 views
0

如何为ajax做到这一点?感谢您的帮助!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> 

和它下面

$("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> 

的JavaScript和这里的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

任何不工作? – Neal

+2

如果'$ _POST ['name]'=='x'; DROP TABLE人员; - ?? – Mike

+0

你的结果是什么?或者没有结果? – ryryan

回答

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 

}); 
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); 
     } 
     }); 
+0

错误是“0 0 undefined”,那是什么? – Ryan

+0

事实上,你最终在错误块意味着你没有成功地从服务器获得响应。一个调试工具可以帮助确切的错误。当涉及到Ajax形式时,我喜欢[这个插件](http://jquery.malsup.com/form/)。它拿出了很多头痛 – Andrea

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'; 
} 

然后:

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

+0

select.php工作正常,我测试了它。然后我尝试表单页面上的ajax,但在按下提交按钮后,没有任何响应。成功设置不起作用。没有显示ID#输出。请帮忙。谢谢。 – Ryan

+0

请参阅我的编辑。让我知道你的结果。 – ryryan

+0

我看到了你的编辑。并测试它在select.php,它的工作..它回应“成功”。并回显出“{”success“:true}'。这很奇怪,因为表单页面中的ajax没有响应select.php中的json – Ryan