对于一个网站,Chrome和IE使用网址调用ajax调用而不预先添加 javascript文件目录到url。
HTML:
<!DOCTYPE html>
<html>
<head>
<script src="/admin/pos.js?v=r2zPvjSAIOf2x8oTbPdUvRh9sFohBNwKM2QOVoOYSug1"></script>
.....
pos.js:
var xhr = $.ajax({
url: '/api/Registers/Test',
timeout: 3 * 1000,
dataType: 'json',
cache: false
});
通过在浏览器网址中输入http://1.2.3.4/admin/Sale
来运行应用程序。
Chrome控制台显示使用错误的网址调用ajax调用:
http://1.2.3.4/api/Registers/Test?_=1393704244572
如何通过将admin添加到url:
来强制浏览器使用正确的URLhttp://1.2.3.4/admin/api/Registers/Test?_=1393704244572
以上代码适用于某些网站,但已停止工作,其中一个网站的IP地址为1.2.3.4 在其他站点中使用没有dns名称,应用程序映射到站点根目录。 应用程序也改变了,单声道升级到3.2.8 不知道是什么导致浏览器停止创建正确的URL?
我不想在javascript中使用base html元素或使用绝对url。根据我的理解,这段代码应该没有它们
ASP.NET MVC4应用程序在Debian的Mono 3.2.8 + mod_mono中运行。
使用jquery。
答案 0 :(得分:0)
尝试使用UrlHelper.RouteUrl方法。
var xhr = $.ajax({
url: '@Url.RouteUrl("Default", new { controller = "Registers", action = "Test" })',
...
修改强> 要生成javascript文件的路径,您可以使用另一个帮助程序:
<script src="@Url.Content("~/admin/pos.js")"></script>
<强> EDIT2 强> 您最好也可能是唯一的解决方案是将URL作为js函数的参数传递
你在pos.js中的功能:
function MyFunction(url)
{
var xhr = $.ajax({
url: url,
...
}
然后从cshtml中调用它,如:
MyFunction('@Url.RouteUrl("Default", new { controller = "Registers", action = "Test" })');