我目前正在建立一个网站,以在Google地图上显示位置。我从Airtable.com数据库中获得了位置地址,并且一切正常。但是,由于google只允许对地理地址进行一定数量的请求,因此我想将坐标保存在同一数据库中,因此我仅在需要查找新位置(地址)时才使用地理编码api。我已经完成所有设置,但是我似乎无法弄清楚如何在剃刀页面中从js调用cs方法。我过去曾经使用过WebMethod,但显然不能在这里使用它。
当我尝试使用在网上找到的示例时,它说我需要RequestVerificationToken,但这需要调用来自表单内的内容(对吗?),并且在网站加载时提示我的ajax调用,并且它得到一个数据库中还没有任何坐标的位置。
这是我第一次使用Razor Pages,所以如果我完全误解了一些内容,请多多包涵。
我想调用的CS方法的图片(Index.cshtml.cs)我尝试使用httpPost标记,但是没有什么区别
[HttpPost] // RequestVerificationToken
public void OnPostGeoLocation()
{
// Just to test that it actually gets called
Console.WriteLine("OnPostGeoLocation CALLED ####################################");
Console.WriteLine("OnPostGeoLocation CALLED ####################################");
Console.WriteLine("OnPostGeoLocation CALLED ####################################");
Console.WriteLine("OnPostGeoLocation CALLED ####################################");
}
来自JavaScript的Ajax调用的图片,基本上是在页面加载时调用的:AjaxCall
function updateRow(recordID, latLng) {
console.log("REC_ID: " + recordID);
console.log("LatLng: " + latLng);
$.ajax({
type: "POST",
url: '/Index?OnPostGeoLocation',
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (data) {
console.log(data.result);
})
}
我知道有些代码不是我真正需要的,但我只是从网上复制而来,将在我遇到此障碍时进行编辑。
尝试返回正确的IActionResult
结果。
[HttpPost]
public IActionResult OnPostGeoLocation() {
// Just to test that it actually gets called
Console.WriteLine("OnPostGeoLocation CALLED ####################################");
return new JsonResult("OnPostGeoLocation CALLED ####################################");
}
接下来,在进行呼叫时,需要调用正确的处理程序路径并包括防伪令牌,因为Razor Pages被设计为可以自动防御跨站点请求伪造(CSRF / XSRF)攻击。
更新了Ajax调用
function updateRow(recordID, latLng) {
console.log("REC_ID: " + recordID);
console.log("LatLng: " + latLng);
$.ajax({
type: "POST",
url: '/Index?handler=GeoLocation',
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (data) {
console.log(data.result);
})
}
很有帮助的文章供参考
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句