0

jqueryから単純なWCFサービスを利用しようとすると特有の問題が発生します。以下のコードを参照してください。

$(document).ready(function () { // Initialize the carousel on the header part of the page $("#myCarousel").carousel({ interval: 2000 });

// The handler for the submit button (login form)
$("#submit").click(function () {
    var sendData = '{"username": "' + 
                     $("#usernameTB").val() + 
                   '", "password": "' + 
                     CryptoJS.MD5($("#passwordTB").val()) + 
                   '"}';

    $.ajax("Services/LoginUser.svc/Login", {
        cache: false,
        type: "POST",
        data: sendData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        processData: true,
        complete: ServiceCompleted
    });
});

}); function ServiceCompleted(data) { alert("Response: " + data.responseText); }

IEからこのコードを使用すると、チャームのように機能します。つまり、呼び出しが実行され、期待どおりの結果が返されます。以下の要求/応答のフィドラーダンプを参照してください。

POST http://localhost/CanDoIT/Services/LoginUser.svc/Login HTTP / 1.1
受け入れる:application / json、text / javascript、* / *; q = 0.01
コンテンツタイプ:application / json; charset = utf-8
X-Requested-With:XMLHttpRequest
リファラー:http://localhost/CanDoIT/default.htm
Accept-Language:nl-NL、en-US; q = 0.5
Accept-Encoding:gzip、deflate
ユーザーエージェント:Mozilla / 5.0(互換性、MSIE 9.0、Windows NT 6.1、WOW64、Trident / 5.0)
ホスト:ローカルホスト
コンテンツの長さ:64
接続:Keep-Alive
プラグマ:キャッシュなし

{"ユーザー名": ""、 "パスワード": "d41d8cd98f00b204e9800998ecf8427e"}

HTTP / 1.1 200 OK
キャッシュ制御:プライベート
コンテンツの長さ:10
コンテンツタイプ:application / json; charset = utf-8
サーバー:Microsoft-IIS / 7.5
X-AspNet-バージョン:4.0.30319
X-Powered-By:ASP.NET
日付:2012年10月29日月曜日09:31:15 GMT

{"d":null}

Chromeを使用して同じことを行うと、次の要求/応答ダンプが表示されます。

POST http://localhost/CanDoIT/Services/LoginUser.svc/Login HTTP / 1.1
ホスト:ローカルホスト
接続:キープアライブ
コンテンツの長さ:64
発信元:http:// localhost
X-Requested-With:XMLHttpRequest
ユーザーエージェント:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.4(KHTML、Geckoなど)Chrome / 22.0.1229.94 Safari / 537.4
コンテンツタイプ:application / json; charset = UTF-8
受け入れる:application / json、text / javascript、* / *; q = 0.01
リファラー:http://localhost/CanDoIT/default.htm?
Accept-Encoding:gzip、deflate、sdch
Accept-Language:nl-NL、nl; q = 0.8、en-US; q = 0.6、en; q = 0.4
Accept-Charset:ISO-8859-1、utf-8; q = 0.7、*; q = 0.3

{"ユーザー名": ""、 "パスワード": "d41d8cd98f00b204e9800998ecf8427e"}

HTTP / 1.1 200 OK
キャッシュ制御:プライベート
コンテンツの長さ:10
コンテンツタイプ:application / json; charset = utf-8
サーバー:Microsoft-IIS / 7.5
X-AspNet-バージョン:4.0.30319
X-Powered-By:ASP.NET
日付:2012年10月29日月曜日09:30:27 GMT

{"d":null}

現在、アラートには{"d":null}テキストが表示されません。

誰かが私がresponseTextを使用するのを妨げている違いが何であるか知っていますか?

4

1 に答える 1

0

ぐるぐる回った後、問題の解決策を見つけました...

フォームを機能させるには、フォームの送信ボタンのクリックハンドラーがfalseを返す必要があるようです。

理由はわかりませんが、機能します...

于 2012-10-29T12:52:37.237 に答える