我有以下代码:
$.ajax({
type: "GET",
url: "/Search/GetNewData" //Controller/ActionMethod
---snip---
)};
通过localhost运行时可以正常工作,但是在部署时,它无法找到控制器方法。我认为这可能是一个路由问题?但是,由于使用ASP.net的知识很少,我将不胜感激。
感谢。
答案 0 :(得分:3)
您真的不想直接在JavaScript中指定网址。
您需要使用帮助者;否则,如果您更改路线,则必须重写JavaScript代码中的所有URL。此外,如果您的网站托管在IIS虚拟目录中(这似乎是问题),它将无法工作。
这里有几个解决方案,如果您的JavaScript代码嵌入在视图中,只需使用
$.ajax({
type: 'GET',
url: '@Url.Action("GetNewData", "Search")'
)};
如果它位于外部JavaScript文件中,您可以使用HTML5 data-*
属性来共享JavaScript代码的URL。
例如:
<div id="foo" data-update-url="@Url.Action("GetNewData", "Search")">
</div>
然后JavaScript代码就像
var updateDiv = $('#foo');
$.ajax({
type: 'GET',
url: updateDiv.data('update-url'),
success: function(data) {
updateDiv.append(data);
}
)};
答案 1 :(得分:2)
以下代码段适用于虚拟目录和网站。
var baseUri = '@Url.Content("~/")';
$.ajax({
type: "GET",
url: baseUri + "Search/GetNewData" //Controller/ActionMethod
---snip---
)};
您还可以在布局中定义baseUri
变量(在所有<script
标记之上),以便能够在所有包含的javascripts中使用它。
答案 2 :(得分:0)
为FireFox安装FireBug。打开.NET面板和控制台面板。请求URL以查看是否有任何错误。如果没有找到,那么学会使用调试器。这绝不是一个快速解决方案,但它将帮助您将来自己解决这些问题。祝你好运。