3

我需要 jQuery 发布到相对 url(当前它发布到根目录)。

结构:

  1. 网址:localhost/myApp
  2. 表格网址:Account/Login
  3. 实际服务器 url: localhost/myApp/Account/Login<- 这里需要它
  4. 发布到网址: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) {
});

我需要能够将此应用程序放在任何 URL 中并且它可以工作,因此如果它托管在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
4

2 回答 2

1

尝试在 url 操作前添加一个斜杠以使其:

/Account/Login
于 2012-05-26T20:57:09.450 回答
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 重定向将 URL 重写为http://localhost,要么您并没有真正访问http://localhost/myApp,或者您可能有一个<base>HTML 元素导致您的相对 URL 被丢弃。如果没有看到所有的 HTML,很难确定,但是更改操作中的路径会将您的表单连接到服务器。

如果您的应用程序的根因平台而异,请考虑使用<base>HTML 元素以避免需要更改所有 URL。使用<base>,您只需在 HTML 中的 1 个位置进行更改。

<!-- relative urls start from /myApp -->
<base target="_blank" href="http://localhost/myApp/">

有关更多信息,请参阅关于基本 HTML 元素的 Mozilla 开发人员中心文章:

链接

  • 在整个文档中用于相对 URL 地址的基本 URL。
  • 如果指定了此属性,则此元素必须位于其属性值为 URL 的任何其他元素之前。
  • 允许使用绝对和相对 URI(但请参阅下面的注释部分)。

此外,虽然来自 W3Schools 的信息应该经过仔细审查来消化,但我在此处列出了基本 HTML 元素上的页面,仅仅是因为它们有比 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>

这是强制性的 W3Fools 链接

注意:基本元素必须位于引用由基本元素修改的 URL 的任何其他元素之前。

于 2012-05-26T21:03:54.437 回答