发布到相对网址

时间:2012-05-26 20:51:55

标签: javascript jquery asp.net url

我需要jQuery发布到相对网址(目前发布到根目录)。

结构:

  1. 网站网址:localhost/myApp
  2. 表格网址:Account/Login
  3. 实际服务器网址:localhost/myApp/Account/Login< - 需要它
  4. 发布到网址:localhost/Account/Login
  5. 形式:

    <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
    

2 个答案:

答案 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>

这是obligatory W3Fools link

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

答案 1 :(得分:0)

尝试在url操作前添加斜杠以使其成为:

/Account/Login