使用jQuery.get时可以指定相对URL吗?
我正在尝试像这样进行ajax调用:
$.get('/home/myInfo', function (data) { .... });
我是从以下页面调用它: http:// localhost / myapp / home / index
当我尝试进行上述调用时,它会转到: http:// localhost / myapp / home / index / home / myInfo
我希望它转到http:// localhost / myapp / home / myInfo
我必须指定绝对URL吗?
绝对不会在ASP.NET MVC应用程序中硬编码这样的URL。 在处理url时始终使用url助手,如下所示:
$.get('@Url.Action("MyInfo", "Home")', function (data) { .... });
或者,如果这是在一个单独的javascript文件中,你不能使用服务器端助手,那么你可以在一些DOM元素上使用HTML 5 data- *属性你是AJAXifying,比如div或者其他东西:
Click me
然后:
$('#mydiv').click(function() { $.get($(this).data('url'), function (data) { .... }); });
或者如果您是AJAX化表单或锚点:
$('#myanchor').click(function() { $.get(this.href, function (data) { .... }); return false; });
锚点当然是使用助手生成的:
@Html.ActionLink("click me", "MyInfo", "Home", null, new { id = "myanchor" })
看到? 无需硬编码url。 不要这样做,因为它会在你修改Global.asax
中的路由模式的第二步中断。 通过遵循这种技术,您的代码将完全不受路由结构的任何变化的影响。
您确定已正确复制并粘贴了代码吗? 因为你拥有它,它应该引用http:// localhost / home / myInfo 。 我可以看到它如你所描述的那样做的唯一原因是你的代码是否正在使用这样的相对URL:
$.get('home/myInfo', function (data) { .... });
否则,如果你真的使用值“/ home / myInfo”而不是“home / myInfo”,那么你已经引用了url的绝对版本(“绝对”url的定义是它以“/ “)。 我运行了一些快速测试,在我的本地机器上,使用“/ home / myInfo”向http:// localhost / home / myInfo发出XHR请求