2011-09-06 58 views
0

我正在製作一個web表單,並且正在通過ajax驗證輸入。對於輸入標籤上的每個按鍵,該值被髮送到一個php文件,在該文件中檢查數字值等。這很容易,我只是讓它回顯顯示的錯誤消息響應。 在這同樣的按鍵,我也希望它檢查是否所有的輸入值是!=「」,這樣的人不能留下一個條目空白。我試圖讓它控制是否提交按鈕的作品。這是我卡住的地方。 有沒有辦法在ajax請求中發回兩件事?我嘗試使用php會話對象,但它不會按照我想要的方式工作(因爲ajax不會更新整個頁面。)php - 多個驗證

+0

爲了說明問題,當我開始將數據輸入到* one *輸入字段時,我會收到針對* all *字段拋出的錯誤消息?這有多惱人?爲什麼不能在按下提交按鈕時檢查所有字段,例如'onsubmit'? – Gordon

+0

我可以這樣做,我只是想要提交按鈕被禁用和不可點擊,直到表單完成...我意識到,另一種方式是完全正常的 – Joseph

回答

1

是的,你可以。兩個選項:

1 - 快速和骯髒 - 您可以發送一個字符串與您需要的兩個項目。您需要將需要發回的兩個項目連接成一個字符串。你的onSuccess函數然後將字符串分割成你想要的兩個項目。

2-優雅的解決方案 - 您可以在服務器中創建一個JSON對象並將其發回。 JSON字符串類似於foo = {「var1」:「response1」,「var2」:「response2」}。在你的客戶端腳本中,你會引用var1.response1和var2.response2。見下面使用Mootools的(一個著名的JavaScript庫)和PHP的一個例子:

javascript代碼(客戶端):

var params = "id=123&page=1&product=12"; //anything you need to pass to the server 
var myRequest = new request.JSON({url:"url of your server script", onSuccess: function(result) {alert(result.response1); alert(result.response2);}).post(params); 

PHP代碼(服務器):

$a["response1"] = response1; //first thing you need to pass back 
$a["response2"] = response2; //second thing you need to pass back 
echo json_encode($a); // this will convert $a array to a json string 

我希望這幫助。祝你好運!

0

您應該使用json作爲這一個。

$errors = array('Error1', 'Error2'); 
echo json_encode($errors); 
0

您可以將onsubmit處理程序附加到爲成功/失敗返回布爾值的窗體。


<script> 
function myValidation(){ 
/* 

Your AJAX validation call here. 

*/ 
if(valid){ 
    return true; 
}else{ 
    return false; 
} 
} 
</script> 
<form onsubmit="return myValidation();"> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 

如果驗證返回false,表單將不會提交。返回true可以根據需要處理表單。

0

爲什麼你不直接用jQuery來做這件事?使用ajax調用通過PHP驗證表單時,用戶填寫表單似乎很荒謬。使用PHP提交後驗證數據,而不是在過程中。

這是除非你需要匹配輸入到數據庫中的東西,但它聽起來不像這裏的情況。