问题背景:这个问题是我的另一个问题的一部分,我发布了这个新问题以使事情易于理解,主要问题链接是:LINK,在此链接您可以找到我的项目的完整简要信息以及用于加载带有context.rewritepath问题的CSS的 解决方案 。
在我的项目中,我在global.asax中编写了context.rewritepath,将用户请求重定向到不同的位置而不更改地址栏地址。
问题是:没有context.rewritepath jquery ajax工作正常;在json中调用带有响应的webmethod。但是当我使用context.rewritepath然后jquery ajax响应是 html 而不是 json 。
这是实时链接:
jasbir.bhinderblink.com
bhinderblink.com/users/jasbir/default.aspx
这两个链接都是从服务器调用相同的页面。第一个是context.rewritepath,第二个是没有context.rewritepath。作为演示测试,在此页面上,您可以单击顶部的第二个或第三个文本框,它将为您提供一个类型框以将数据保存到数据库。
您会注意到第一个链接会生成错误,如果您转到firebug java HelloWorld POST响应,那么您将看到它返回html而不是json,第二个链接返回json数据
答案 0 :(得分:1)
您可以随时尝试返回正确的mime类型。此外,您可以在ajax post url中使用完整的url到HelloWorld。
url: "/users/jasbir/default.aspx/HelloWorld",
更新:
根据链接的问题,您的问题是您在执行重写时丢失了请求的/ HelloWorld部分。
If Directory.Exists(Server.MapPath("~/users/" & parameters(i))) Then
Context.RewritePath("/users/" & parameters(i) & HttpContext.Current.Request.Path, False)
Return
Else
Context.RewritePath("/error.aspx")
Return
End If
答案 1 :(得分:0)
在主页面中我添加了这个....
<base href="http://www.bhinderblink.com/users/jasbir/">
并且此stackoverflow link帮助解决了此代码的问题: -
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
</customHeaders>
</httpProtocol>