1

私はasp.net Web APIに非常に慣れていません。jquery、クロスドメインで簡単な呼び出しを行っています。すべてが適切に機能しているように見え、返された結果を確認すると、json が返されていることがわかりますが、呼び出しは「Uncaught SyntaxError: Unexpected token :」エラーで失敗します。なぜ失敗したのかわかりません。助けてくれてありがとう。

$.ajax({
    url: 'http://webapidomain.domain.com/api/Register?firstName=' + firstName + '&lastName=' + lastName + '&' + 'email=' + email + '&password=' + password,
    type: 'GET',
    dataType: 'jsonp',
    contentType: 'application/json',
    success: function (result) {
        alert(result);
    },
    complete: function () {
        $.mobile.hidePageLoadingMsg();
    }
});
4

2 に答える 2

2

Web APIは、そのままではJSONPをサポートしていません。JSONPメディアタイプフォーマッターが必要になります。(メディアタイプフォーマッターは、データをJSONやXMLなどの特定の形式にシリアル化するオブジェクトです。)

Rick Strahlには、役立つ可能性のあるコードがいくつかあります:http ://www.west-wind.com/weblog/posts/2012/Apr/02/Creating-a-JSONP-Formatter-for-ASPNET-Web-API (I haven試していません。)

JSONPを要求したときにJSONが返される理由は、Web APIが要求したタイプと一致しない場合、リストの最初の形式(デフォルトではJSON)を返すためです。

于 2012-07-03T05:29:33.927 に答える
0

クロスドメイン呼び出しを行っている場合、既定では、 SAME-ORGIN ポリシーによって多くのブラウザーによってブロックされます。回避する必要がある場合は、JSONP を使用する必要があります (呼び出しているエンドポイントによって生成された出力を変更できる場合、つまり、ドメインを所有している場合)。それ以外の場合は、Web サーバーをプロキシとして使用し、その端に接続する必要があります。 Web エンドポイントをポイントしてクエリを実行し、対応するデータを取得します。

また、これを実行して (JSONP 結果を生成するプロキシとして機能し)、jsonp 結果を生成する特定の Web サイトもあります。

于 2012-07-03T03:29:12.047 に答える