context.RewritePath和jquery ajax不调用webmethod

时间:2014-06-21 02:55:15

标签: javascript jquery asp.net asp.net-ajax global

问题背景:这个问题是我的另一个问题的一部分,我发布了这个新问题以使事情易于理解,主要问题链接是: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数据

enter image description here enter image description here

2 个答案:

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

解决方案 Jquery ajax使用vb.net context.rewritepath调用webmethod ...

在主页面中我添加了这个....

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