2011-09-01 48 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