Javascript 使用jQuery在CouchDB中验证ajax查询
当通过Javascript 使用jQuery在CouchDB中验证ajax查询,javascript,jquery,couchdb,Javascript,Jquery,Couchdb,当通过$.ajax访问本地主机受保护的CouchDB数据库时,它会提示一个警报,询问用户名/密码。如果取消提示,CouchDB将发出错误警报,并且我的$.ajax错误回调将永远不会执行。如果我将授权用户传递到url(http://user:pass@本地…),正确执行成功回调 那么,有可能对coach进行经过身份验证的ajax查询并使用我自己的错误处理函数吗 编辑,代码: var request = $.ajax({ url: myUrl, type: "GET"
$.ajax
访问本地主机受保护的CouchDB数据库时,它会提示一个警报,询问用户名/密码。如果取消提示,CouchDB将发出错误警报,并且我的$.ajax错误回调将永远不会执行。如果我将授权用户传递到url(http://user:pass@本地…
),正确执行成功
回调
那么,有可能对coach进行经过身份验证的ajax查询并使用我自己的错误处理函数吗
编辑,代码:
var request = $.ajax({
url: myUrl,
type: "GET",
dataType: "jsonp",
success: function(){
console.log("ok");
},
error: function(){
console.log("error");
}
});
- 如果
不包括凭据,如myUrl
,取消提示后将永远不会执行错误回调http://localhost:5984/mydb/handshakeDoc
- 如果
包含无效凭据,如myUrl
,取消提示后仍会出现错误提示,并且永远不会执行错误回调http://user:invalidpass@localhost:5984/mydb/handshakeDoc
- 如果
包含有效凭据,则执行成功回调myUrl
<VirtualHost 123.123.123.123:80>
ServerName example.com
ProxyPass /couch http://localhost:5984
ProxyPassReverse /couch http://localhost:5984
</VirtualHost>
-----原职-----
你可以试试这个:
var request = $.ajax({
url: myUrl,
type: "GET",
username: user,
password: pass,
dataType: "jsonp",
success: function(){
console.log("ok");
},
error: function(){
console.log("error");
}
});
jQuery允许您通过两个ajax参数(用户名和密码)使用http基本身份验证
或者您可能想尝试使用.来澄清-取消提示时是否只调用了$.ajax.error?如果在提示中输入无效凭据,会发生什么情况?并且请发布您的代码。如果我输入了无效的凭据,提示仍然会出现。代码已更新。您是否向url发送任何数据?什么是handshakeDoc api方法?我在couchdb文档中找不到它。handshakeDoc只是一个文档示例。数据不需要执行与数据库的成功或错误连接(我只是将jsonp数据类型设置为允许跨源),谢谢,但已经尝试使用用户名/密码,没有运气(甚至没有使用正确的凭据)。是的,它只是提示登录警报,您从couchdb得到了什么错误?是否支持并启用jsonp?您甚至必须使用jsonp吗?jsonp是必需的,因为couchdb运行在JS发出ajax请求的不同端口,并且在couchdb配置中启用。在出现错误时,CouchDB只是提示另一个警报,说明需要进行身份验证。Ok。我发现了这个问题——jsonP请求不是用XMLHttpRequest对象发出的,因此不支持用户名/密码参数和正常的基本身份验证。我在寻找一个可行的解决办法。
var request = $.ajax({
url: myUrl,
type: "GET",
username: user,
password: pass,
dataType: "jsonp",
success: function(){
console.log("ok");
},
error: function(){
console.log("error");
}
});