ご提供いただいたサンプル コードを確認しましたが、問題はsame origin policy restriction
. クロス ドメイン AJAX 呼び出しを実行することはできません。あなたの例では、サービスはホストされてhttp://localhost:35798
おり、それを呼び出すWebアプリケーションhttp://localhost:23590
は不可能です。サービスと呼び出し元のアプリケーションの両方を同じ ASP.NET プロジェクトでホストする必要があります。( ) を使用してクライアント側で CORS を有効にしようとしたようです$.support.cors = true;
が、サービスでは CORS がサポートされていません。
呼び出しページ ( ) で見られるもう 1 つの問題は、jquery を 2 回 (1 回は縮小版、もう 1 回は標準バージョン) 含め、 jquery の後にTestHTML5.htm
スクリプト ( ) を含めているという事実です。TestHTML5.js
スクリプト参照を修正する必要があります。さらに別の問題は、<script type="text/javascript"/>
無効な次の行です。
それでは、マークアップを修正することから始めます (重要な部分に集中するために、マークアップに含まれていたすべての CSS ノイズを削除しました)。
<!DOCTYPE html>
<html dir="ltr" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>SignUp Form</title>
<script type="text/javascript" src="../Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../Scripts/TestHTML5.js"></script>
</head>
<body>
<button id="Send" onclick="testHTML5OnClick();">
Send Me ID!
</button>
</body>
</html>
そして、あなたTestHTML5.js
も少しきれいにすることができます。たとえば、サービスが次の URL パターンをリッスンしており、json/{id}
GET 動詞のみを受け入れており、POST を使用しようとしていますが、これは不可能です。それに加えて、GET動詞では意味をなさない JSON.stringify メソッドを使用しようとしています。サービスで定義したように、URL 部分の一部として ID を送信するだけです。
function testHTML5OnClick() {
var id = 5;
var url = "../RestServiceImpl.svc/json/" + id;
var type = 'GET';
callLoginService(url);
}
function callLoginService(url, type) {
$.ajax({
type: type,
url: url,
success: serviceSucceeded,
error: serviceFailed
});
}
function serviceSucceeded(result) {
alert(JSON.stringify(result));
}
function serviceFailed(result) {
alert('Service call failed: ' + result.status + '' + result.statusText);
}