在我的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虽然我不太明白为什么(据我所知,我是在相同的协议/主机上运行它)。
答案 0 :(得分: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") }
});
}
答案 1 :(得分:0)
“解决”
如果其他人有这个问题,我仍然不确定是什么原因导致了这个问题。谷歌浏览器提供了更详细的错误消息,表明违反了相同的原始政策,即使我不相信这种情况。
尽管如此,有一个更简单的解决方案,所有没有Javascript:CouchDB会话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,包括如何在表单提交时设置自动页面重定向。