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

ただし、logmein() を Safari の Web 開発者コンソールに直接入力すると、問題なく動作します。ここで何が間違っていますか?

編集:おそらくこれに関連していると思います: https ://stackoverflow.com/a/6792725/637562ですが、理由はよくわかりません(私の知る限り、同じプロトコル/ホストで実行していました)。

4

2 に答える 2

0

「解決しました」

他の誰かがこの問題を抱えている場合、何が問題を引き起こしたのか正確にはわかりません. Google Chrome は、同一生成元ポリシーに違反していることを示唆する、より詳細なエラー メッセージを表示しました。

それにもかかわらず、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 (フォーム送信時に自動ページ リダイレクトを設定する方法を含む)。

于 2012-09-25T13:10:28.893 に答える
0

#submit のクリック イベントで実行するように logmein 関数を変更してみてください。

$('#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 に答える