我需要jQuery发布到相对网址(目前发布到根目录)。
结构:
localhost/myApp
Account/Login
localhost/myApp/Account/Login
< - 需要它localhost/Account/Login
形式:
<form id="login" action="Account/Login" method="POST">
</form>
jQuery的:
$.post($el.find('form').attr("action"), $el.find('form').serialize(), function(resp) {
});
我需要能够将此应用放在任何网址中并且有效,所以如果它在www.site.com/dir1/dir2/
托管,那么它应该发布到www.site.com/dir1/dir2/Account/Login
。
注意,这是一个单页面应用。因此表单位于localhost/myApp
。
标题信息:
Request URL:http://localhost/Account/Login
Request Method:POST
Status Code:404 Not Found
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Content-Length:19
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host:localhost
Origin:http://localhost
Referer:http://localhost/myApp
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5
X-Requested-With:XMLHttpRequest
答案 0 :(得分:1)
Request URL:http://localhost/Account/Login
Request Method:POST
Status Code:404 Not Found
Request Headersview source
...
...
Referer:http://localhost/myApp
虽然您正在加载/ myApp,但很明显正在进行某种形式的重定向,即将客户端放在根/路径上:
因此,在您的操作中,将以下内容添加到操作属性:
<form action="/myApp/Account/Login">
顺便说一句,您要么有301/302重定向,要么将网址重写为http://localhost
,要么您实际上没有访问http://localhost/myApp
,或者您可能拥有<base>
导致您的相对URL被抛弃的HTML元素。在没有看到所有HTML的情况下,很难确定,但更改操作中的路径会将表单连接到服务器。
如果应用程序的根目录从平台更改为平台,请考虑使用<base>
HTML元素以避免需要更改所有URL。使用<base>
,您只需在HTML中的1个位置进行更改。
<!-- relative urls start from /myApp -->
<base target="_blank" href="http://localhost/myApp/">
有关详细信息,请参阅base HTML element上的Mozilla开发人员中心文章:
HREF
- 整个文档中用于相对URL地址的基本URL。
- 如果指定了此属性,则此元素必须位于具有值为URL的属性的任何其他元素之前。
- 允许使用绝对和相对URI(但请参阅下面的注释部分)。
另外,虽然W3Schools的信息应该经过仔细审查,但我在the base HTML element here上列出了这个页面,仅仅因为他们有比MDC更好的例子:
<head>
<base href="http://www.w3schools.com/images/" target="_blank" />
</head>
<body>
<img src="stickman.gif" />
<a href="http://www.w3schools.com">W3Schools</a>
</body>
注意:基本元素必须位于引用由基本元素修改的URL的任何其他元素之前。
答案 1 :(得分:0)
尝试在url操作前添加斜杠以使其成为:
/Account/Login