javascript - 使用 AJAX POST 部分返回剃须刀页面
问题描述
我已经搜索过这个,尝试了从stackoverflow建议的问题中接受的解决方案可能有效,我在这里作为最后的手段,在尝试了我能想到或找到的一切之后。我想要我的剃须刀页面上的一个按钮,通过我必须使用的 ajax 函数发送一个帖子请求,并返回一个没有布局的剃须刀页面。
HTML
<button id="myawesomebutton">Go get a partial</button>
javascript
var myawesomeajaxobject=new ajax('/myawesomeurl');
myawesomeajaxobject.done=function(dat)
{
document.getElementById('myawesomediv'),innerHTML=dat
}
myawesomeajaxobject.go('myawesomeparameter01=1&myawesomeparameter02=2');
我必须使用的 AJAX 对象添加了以下标头:
Content-type, application/x-www-form-urlencoded
Access-Control-Allow-Origin, *
以及向'?'
url 端点添加后跟 unix 时间代码。
据我了解,请求必须首先发送到剃须刀页面后面的 cshtml.cs 类,然后将重定向到我的部分。
无论我如何命名我的 C# 方法、onPost、myawesomeurl 以及许多其他名称,我都会收到 404 错误,而不是在内部渲染部分内容myawesomediv
。
我试图添加一个防伪令牌,将服务器上的 CORS 值设置为“全部接受”,并尝试将请求直接发送到部分的 onPost,但我一无所获。
更新。
我已经添加了:
services.AddRazorPages().AddRazorPagesOptions(options =>
{
options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});
到我的启动。
我的 javascript 内容如下:
var myawesomeajaxobject=new ajax('/myawesomeurl');
myawesomeajaxobject.done=function(dat)
{
document.getElementById('myawesomediv'),innerHTML=dat
}
myawesomeajaxobject.go('handler=myawesomeurl&myawesomeparameter01=1&myawesomeparameter02=2');
这是cshtml.cs
文件中的处理程序方法:
public void OnPostmyawesomeurl()
{
//myawesomecoded added, so I have a break point to hit.
}
而且我仍然得到404。这在剃须刀页面中实际上可能吗?
解决方案
看起来您正在向命名处理程序方法发出 POST 请求。处理程序仍需要 On[Http Method]
合并到其名称中,以便可以找到它。如果是 POST 请求,则处理程序方法的名称应为OnPostMyAwesomeUrl
.
您还需要处理请求验证内置于 Razor 页面的事实,因此您需要在 AJAX 请求中包含令牌(https://www.learnrazorpages.com/security/request-verification#ajax-post- requests-and-json),或完全禁用该页面(https://www.learnrazorpages.com/security/request-verification#opting-out):
[IgnoreAntiforgeryToken(Order = 1001)]
public class IndexModel : PageModel
{
...
}
推荐阅读
- networking - 在主机和来宾 VMWare 之间建立直接网络
- javascript - 如何从javascript中的函数退出?
- lua - 如何在 Wireshark Lua 解析器中使用 add_packet_field?
- java - Hibernate Spring:spring.jpa.hibernate.ddl-auto 属性不创建生成表不起作用
- java - Open Api Generator 插件不适用于 Maven
- pypika - PyPika如何选择星减去一列
- c++ - 为什么这段代码的向量迭代器没有停止?
- typescript - 防止 VSCode 折叠 Observable
到可观察的 - c++ - 使用 gcc 内联汇编可以将 %r# 寄存器设置为输入约束吗?
- python - 高斯混合模型 (GMM) 的期望最大化算法 (EM)