2016-01-27 76 views
0

我正在使用jQuery驗證器來驗證表單。如果沒有使用電子郵件,我的服務器將返回true,如果使用的是this email is already being used,則返回true。使用Firebug,我看到對jQuery驗證器的GET請求的響應爲truethis email is already being used,我相信服務器正常工作。jQuery遠程驗證器服務器生成的錯誤消息沒有顯示

但是,當服務器返回這些錯誤時,它們不會顯示爲錯誤。但是,其他非遠程錯誤(如無效的電子郵件)正在顯示。雖然沒有顯示遠程錯誤,但它們實際上阻止了表單的提交。

如下圖所示,我也使用自定義客戶端消息,但我已經刪除他們認爲他們可能是負責任的,但得到相同的結果。

編輯。我的服務器返回'true'沒有錯誤,並且'some error message'發生錯誤。但是,如果我的服務器返回'false',則會顯示客戶端消息。

我如何讓jQuery驗證器顯示服務器生成的錯誤消息?

{ 
    "ignore": [], 
    "rules": { 
     "email": { 
      "email": true, 
      "maxlength": 45, 
      "invite":true, 
      "remote": "openContactEmail" 
     } 
    }, 
    "messages": { 
     "email": { 
      "email":"Please enter a valid email address.", 
      "remote":"Another contact is using this email for this account." 
     } 
    }, 
    "data": { 
     "email": { 
      "id": 123 
     } 
    }, 
    "remote": "path_to_validation_file.php" 
} 
+0

顯示您的服務器端代碼是非常重要的,除了你自己能夠解決這個問題。否則,我們只能猜測你沒有以JSON的形式迴應響應。 – Sparky

+0

@Sparky是的,我同意,不這樣做感覺不好。只是完全相信它不是,但顯然是錯誤的。 – user1032531

回答

0

您可以像這樣配置遠程返回一個具有isError和消息的json。

然後配置dataFilter函數返回消息。

remote: { 
     url: "path_to_validation_file.php" 
}, 
     dataFilter: function(data) { 
      var json = JSON.parse(data); 
      if(json.isError == "true") { 
       return "\"" + json.errorMessage + "\""; 
      } else { 
       return ''; 
      } 

     } 
    } 

他們還建議this

0

我的服務器已經返回:

echo($error?'true':$message); 

我把它改成下面的,現在正在顯示服務器生成的消息。

echo($error?json_encode(true):json_encode($message)); 

http://jqueryvalidation.org/remote-method/

的服務器端的響應必須是一個JSON字符串必須是「真」的 有效的元素,可以爲無效 元素「假」,未定義或空,使用默認的錯誤消息。我

+0

是的,這似乎是聰明的,然後我的回答:) – Anil

+0

@AnilKumar是的,似乎是。然而,在我原來的問題中,我表示服務器響應正常,結果並非如此。 – user1032531

相關問題