0

jquery を使用して asp.net プロジェクトで wcf rest api を使用しようとしています。そうするために私はやった:

  1. 作成された WCF Rest サービスのソース コードは、ここからダウンロードできます。
  2. jqueryを使用してそのrestAPIを使用するASP.Netプロジェクトを作成しました。ソースコードはこちら

ボタンをクリックする ASP .Net プロジェクトで、REST サービスを呼び出そうとしています。しかし、毎回 2 つの問題が発生します。

  1. var jsondata = JSON.stringify(request);TestHTML5.js で呼び出すと、「 Microsoft JScript ランタイム エラー: 'JSON' は未定義です」というエラーがスローされます。

  2. [無視] を押すと、WCF Rest API 呼び出しが続行されますが、常にエラー (見つかりません) 関数が返されます。Rest API が呼び出されることはありません。

事前にご協力いただきありがとうございます。


回答: ソリューションとソース リンクは、このリンクにあります。

4

2 に答える 2

1

ご提供いただいたサンプル コードを確認しましたが、問題は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);
}
于 2013-03-03T08:54:49.393 に答える
1

この参照を追加しましたか?

script type="text/javascript" src="../../json.js"></script> 

私は同じ問題を抱えており、検索するとこれとこの結果が得られます

于 2013-03-02T07:03:53.377 に答える