2012-09-23 39 views
0

在我的HTML頭中,我首先包含jquery.min.js,jquery.couch.js和twitter-bootstrap js(按此順序)和那麼我有一個稱爲logmein()的函數,如下所示:Javascript(JQuery/CouchDB)函數不起作用,但僅當從按鈕onClick調用時

<script> 
$.couch.urlPrefix = "http://127.0.0.1:5984" 
function logmein() {$.couch.login({ 
    name: "testuser", 
    password: "test", 
    success: function() { alert("Success!") }, 
    error: function() { alert("Login failed") } 
    }); 
} 
</script> 

使用用戶名和密碼硬編碼進行測試。

然後我有一個按鈕:

<button id="submit" class="btn btn-primary" onClick="logmein()">Sign in</button> 

當我嘗試並點擊提交,我得到這個錯誤:

jquery.couch.js:216 TypeError: 'null' is not an object (evaluating 'resp.error') 

但是,如果我輸入LogMeIn的()直接進入Safari瀏覽器的Web開發者控制檯,它工作得很好!我在這裏做錯了什麼?

編輯:我認爲它可能與此相關:https://stackoverflow.com/a/6792725/637562雖然我不太明白爲什麼(據我所知,我在相同的協議/主機上運行它)。

回答

0

內「已解決」

如果有其他人遇到此問題,我仍然不確定是什麼導致了問題。谷歌瀏覽器給出了更詳細的錯誤信息,表明同一原產地政策已被違反,儘管我不相信這是事實。

儘管如此,還是有一個更簡單的解決方案,全都沒有Javascript:CouchDB Session API。

<form action="http://127.0.0.1:5984/_session/" method="post"> 
<input type="text" name="name"> 
<input type="password" name="password"> 
<button id="submit">Sign in</button> 

其中127.0.0.1是本地CouchDB實例,並應與您的CouchDB服務器地址替換....

更多細節在這裏:http://wiki.apache.org/couchdb/Session_API包括如何設置自動重定向頁面表單提交。

0

你可以試着改變你的LogMeIn的函數,在#submit的點擊事件中運行:

$('#submit').click(function(){ 
    $.couch.urlPrefix = "http://127.0.0.1:5984"; 
    $.couch.login({ 
     name: "testuser", 
     password: "test", 
     success: function() { alert("Success!") }, 
     error: function() { alert("Login failed") } 
     }); 
}); 

而且,似乎器的URLPrefix應該是LogMeIn的()函數

function logmein() 
{ 
    $.couch.urlPrefix = "http://127.0.0.1:5984"; 
    $.couch.login({ 
     name: "testuser", 
     password: "test", 
     success: function() { alert("Success!") }, 
     error: function() { alert("Login failed") } 
     }); 
} 
+0

我其實試過這個,但它似乎導致該功能在頁面加載時也運行...?編輯:我剛剛嘗試了這一點,逐字,也不起作用。 – Matthew

+0

請參閱urlPrefix的編輯。我不熟悉沙發,但似乎urlPrefix應該在函數內部。 –

+0

好的,我試過了,它給出了同樣的錯誤。具體來說,當我點擊提交,我得到「TypeError:'null'不是一個對象(評估'resp.error')」,然後頁面刷新。當我直接從控制檯調用logmein()時,urlPrefix是否應該在logmein()函數內部,正如我之前所說的那樣,它只會在從按鈕調用時出現此錯誤(無論從onClick =或從$('#submit')。click())。嗯.. – Matthew

相關問題