context.RewritePath 和 jquery ajax 不调用 webmethod

Posted

技术标签:

【中文标题】context.RewritePath 和 jquery ajax 不调用 webmethod【英文标题】:context.RewritePath and jquery ajax not calling webmethod 【发布时间】:2014-08-11 20:05:19 【问题描述】:

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

【问题讨论】:

您需要阐明如何使用您的示例页面。当我尝试您提供的第二个链接时,我得到一个状态 500 错误页面。 现在它正在工作,我正在测试一些 mime 类型,它开始显示 500 错误。我重新上传了项目。 您的问题中缺少一些关键信息,例如 global.asax 中执行 context.rewritepath 的代码和应该生成您的 json 响应的代码。除了症状,我们没有什么可做的。将来,您需要提供导致问题的代码及其结果。鉴于问题不完整,我只能提供一些解决问题的建议。 你好 B2k 我在这个问题的顶部添加了背景和链接。这个问题是我另一个问题的一部分。为了让事情容易理解,我开始了这个新问题。 global.asax 的完整代码和信息在该链接中。 我投票赞成你提供必要的细节来回答你的问题。 【参考方案1】:

您总是可以尝试只返回正确的 mime 类型。此外,您可以在 ajax 帖子网址中使用 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

【讨论】:

我已经尝试过了,但没有解决方案。请查看我在主要问题中提供的链接以供参考。 那么您的建议是什么,如何捕获 /HelloWorld 部分?我尝试将 Context.Request.Path 放在 global.asax 文件中,如您在代码示例中所示,它以服务器上的错误结束。 只是为了测试你的代码输入这个地址http://www。 jasbir.bhinderblink.com。并在没有您建议的代码的情况下进行测试,输入此地址 jasbir.bhinderblink.com/ 它不起作用,现在它无法找到 default.aspx 页面。您能否解释一下如何捕获 HttpContext.Current.Request.Path 输出,以便我们了解实际发生的情况? Wordpress 使用 Web 服务器的重写规则。这是在请求被发送到 asp.net 进行处理之前处理的。对于旧服务器,我们使用 iis7 和 ISAPI Rewrite 中内置的重写规则。【参考方案2】:

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

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

<base href="http://www.bhinderblink.com/users/jasbir/">

这个 *** 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>

【讨论】:

以上是关于context.RewritePath 和 jquery ajax 不调用 webmethod的主要内容,如果未能解决你的问题,请参考以下文章

ContentType 不起作用,mime=application/octet-stream

为啥 url 重写不起作用?

ASP.NET iis发布网站后,浏览报错。虚拟路径“/aspx/login.aspx”映射到另一个应用程序,这是不允许的。

jQuery 简介

js上课笔记

pyspider和pyquery总结