我有以下简单的jquery get语句,它在我的服务器上调用WebApi:
$.get('api/DataAPI?tenantId=1&datatype="Contacts"&actionname="ActiveOnly"', GetDataRetrieved);
这在视觉工作室中运行良好。我检查了chrome中的网络流量,它显示了以下创建的请求:
http://localhost:61882/api/DataAPI?tenantId=1&datatype=%22Contacts%22&actionname=%22ActiveOnly%22
我现在已将我的网站部署到IIS,现在api调用失败,找不到404。我检查了chrome中的网络流量,可以看到问题:
http://localhost/api/DataAPI?tenantId=1&datatype=%22Contacts%22&actionname=%22ActiveOnly%22
部署到IIS的网站位于http://localhost/MyWebSite
。所以电话应该转到:
http://localhost/MyWebSite/api/DataAPI?tenantId=1&datatype=%22Contacts%22&actionname=%22ActiveOnly%22
我的$ .get调用中的正确语法是什么,以便它适用于visual studio并部署到IIS(我很想使用razor @ 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>
答案 0 :(得分:0)
您可能需要在jQuery和其他.js文件路径中添加相对URL,即
<script src="<%= ResolveClientUrl("~/Scripts/jQuery-v1.x.js") %>" type="text/javascript"></script>
答案 1 :(得分: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);