0

在我的 HTML 头中,我首先包含 jquery.min.js、jquery.couch.js 和 twitter-bootstrap js(按此顺序),然​​后我有一个名为 logmein() 的函数,如下所示:

<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')

但是,如果我直接在 Safari 的 Web 开发人员控制台中键入 logmein(),它就可以正常工作!我在这里做错了什么?

编辑:我认为这可能与此有关:https ://stackoverflow.com/a/6792725/637562虽然我不太明白为什么(据我所知,我在同一个协议/主机上运行它)。

4

2 回答 2

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") }
        });
}
于 2012-09-23T21:44:24.290 回答
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包括如何在表单提交时设置自动页面重定向。

于 2012-09-25T13:10:28.893 回答