2011-06-29 76 views
1

當其控制檯顯示用戶名字段錯誤時,javascript控制檯一直顯示「不是自定義字段名稱:用戶名」。顯然有一個名爲「用戶名」的字段。我嘗試將它改爲其他名稱,但它仍然無效。 任何想法是怎麼回事?facebook異步驗證不顯示錯誤

<fb:registration redirect-uri="<?=$pageurl?>" 
    fields="[{'name':'name'},{'name':'email'},{'name':'location'},{'name':'username','description':'Username','type':'text'},{'name':'password','view':'not_prefilled'},{'name':'captcha','view':'not_prefilled'}]" 
    onvalidate="validate" width="400"></fb:registration> 

和我的驗證功能...

function validate(form,cb) 
{ 
    console.dir(form); 
    $.get('/api/?f=user_email_present&username='+form.username+"&email="+form.email,function(data){ 
     console.log(data); 
     if(data.username==false) 
     { 
      cb(); 
     } 
     else 
     { 
      if(data.username=='username') 
       cb({username: 'That username is already taken. Please try another username.'}); 
      else if(data.username=='usernamelength') 
       cb({username: 'The username cannot exceed 20 characters in length.'}); 

     } 
    }); 
} 

我不能太確定,但是我想我還記得這一切工作而回。我們在發佈後的兩天內完全受到震動。

更新:我廢棄了異步驗證並使用了其他驗證。它仍然會拋出同樣的錯誤!

+0

你究竟想在這裏做什麼?我可能是錯的,但大多數通過Facebook的xfbml方法已被棄用(或在成爲這樣的過程中)。這會導致你的錯誤(如果該方法正在工作,並且現在不是) –

+0

facebook已棄用fbml而不是xfbml標記。事實上,你不能對註冊插件的iframe版本使用服務器端異步驗證。只有xfbml版本允許。 – Munim

回答

1

在花了兩天的好時間之後,我設法弄清楚發生了什麼。這是Facebook的一個愚蠢但強大的bug。如果小部件的寬度太小,則會出現此錯誤。將寬度增加到800px可以及時修復它。當寬度太小時,它們可能不會呈現適當的錯誤字段。
我已經提交了一個錯誤報告:https://github.com/facebook/connect-js/issues/275
如果你們可以給我一個鏡頭並評論我的錯誤報告,以便他們可以立即採取行動,這將是非常棒的。

+0

它看起來像你在GitHub上點擊「Comment&Close」而不是「Comment」。 (我做了很多。)如果你想讓Facebook團隊看到它,你需要開一個新的問題。如果您轉貼,我會很樂意發表評論。 :) –

+0

嘿..感謝您指出。新問題:https://github.com/facebook/connect-js/issues/278 – Munim