0

サーバーで WebApi を呼び出す次の単純な jquery get ステートメントがあります。

$.get('api/DataAPI?tenantId=1&datatype="Contacts"&actionname="ActiveOnly"', GetDataRetrieved);

これは、ビジュアル スタジオで正常に動作します。Chrome でネットワーク トラフィックを確認したところ、次のリクエストが作成されたことが示されています。

http://localhost:61882/api/DataAPI?tenantId=1&datatype=%22Contacts%22&actionname=%22ActiveOnly%22

Web サイトを IIS にデプロイしたところ、API 呼び出しが 404 not found で失敗しました。Chrome でネットワーク トラフィックを確認したところ、次のような問題が発生しました。

http://localhost/api/DataAPI?tenantId=1&datatype=%22Contacts%22&actionname=%22ActiveOnly%22

IIS に配置されたときの Web サイトは にありますhttp://localhost/MyWebSite。したがって、呼び出しは次の場所に移動する必要があります。

http://localhost/MyWebSite/api/DataAPI?tenantId=1&datatype=%22Contacts%22&actionname=%22ActiveOnly%22

Visual Studio と IIS への展開の両方で機能する $.get 呼び出しの正しい構文は何ですか (かみそり @Url.Content を使用したいのですが、javascript ブロックでは機能しません)。

前もって感謝します

編集: これは、.cshtml ページ全体のマークアップです。

@{
ViewBag.Title = "MyWebSite";
Layout = "~/Views/Shared/SiteLayout.cshtml";
}

@section HeaderContent
{
<script type="text/javascript" src="@Url.Content("~/assets/scripts/App/Base64EncodeDecode.js")"></script>
 }

<script type="text/javascript">   
    $(function () {               
    $("#TestButton").click(function () {            
        $.get('api/DataAPI?tenantId=1&datatype="Contacts"&actionname="ActiveOnly"', GetDataRetrieved);
    });
});

function GetDataRetrieved(data) {        
     //alert(base64_decode(data));
    alert(data);
}   
</script>

<button id="TestButton">Test Button</button>
4

2 に答える 2

0

おそらく、jQuery およびその他の .js ファイルのパスに相対 URL を追加する必要があります。

<script src="<%= ResolveClientUrl("~/Scripts/jQuery-v1.x.js") %>" type="text/javascript"></script>
于 2012-07-26T02:17:29.437 に答える
0

Javascript がページに直接配置されていると仮定します。

$.get('@Url.Action("DataAPI", "API", new {tenantId = 1, datatype = "Contacts", actionname="ActiveOnly"})', GetDataRetrieved);

あなたが必要とするものでなければなりません

別のページにある場合は、必要な URL を HTML 要素に関連付けてから、jQuery を使用して抽出します。

<div id='foo' data-url='@Url.Action("DataAPI", "API")'>
</div>

Javascript は次のようになります。

$.get($('#foo').data('url'), {tenantId: 1, datatype: "Contacts", actionname: "ActiveOnly"}, GetDataRetrieved);
于 2012-07-26T02:43:27.203 に答える