0

次のコードの何が問題なのか、私にはよくわかりません。ステータスで応答がありません...

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js">    
</script>
<input type="text" name="UserName" id="UserName" />
<div id="divStatus"></div>
<script type="text/javascript">
    $("#UserName").keyup(function() {
        var name = $("#UserName").val();
        var status = $("#divStatus");
        var user = $.trim(name);
        if (user.length > 3) {
            status.html("Checking....")
            $.getJSON("http://192.168.0.14/openids/api/json/user/username/availability/check/", {
                username: name,
            }, function(data) {
                status.html("got")
            });

        } else {
            status.html("Min 3 letters ");
        }
    });​
</script>

jsonの応答は次のとおりです。

  {"status": "Error", "message": "A user with this username already exists."}
4

3 に答える 3

3

ドキュメントの引用:

URLに文字列「callback=?」が含まれている場合 (または同様に、サーバー側APIで定義されているように)、リクエストは代わりにJSONPとして扱われます。詳細については、$。ajax()のjsonpデータ型の説明を参照してください。

クロスドメインリクエストを行っているので、おそらくJSONPを使用したいと思うでしょう。これを行うにcallbackは、クエリ文字列の最後にパラメータを追加します。

$.getJSON("http://192.168.0.14/openids/api/json/user/username/availability/check/?callback=", {
    username: name,
}, function(data) {
    status.html("got")
});
于 2012-12-17T11:43:44.133 に答える
1

さて、クロスドメインajaxセキュリティの問題が問題です。追加の作業なしで機能するには、呼び出し元のスクリプトとターゲットスクリプトが同じドメインにある必要があります。ブラウザのエラーコンソールを開くと、そこでセキュリティ例外が表示されるはずです。

他のホストからのリクエストをサポートするように明示的に設定していない限り。

これらの答えを確認してください:

サーバーでクロスドメインリクエストを有効にする方法は?

jQueryAJAXクロスドメイン

于 2012-12-17T11:39:21.753 に答える
1

あなたが遭遇しているのは、呼び出しがエラーステータスを返しているということだと思いますが、.getJSONAPIは成功ハンドラーのオプションしか提供しません。

実行する必要があるのは、エラーハンドラーを追加できる.ajaxAPIを確認することです。.getJSON APIは、その省略形を示しています。さらに渡すことができるすべてのオプションについては、.ajaxAPIを確認してください。

編集これはCORSタイプのリクエスト であったため、これがハンドラーに到達しないことに気づきませんでした。

于 2012-12-17T11:40:24.843 に答える