【发布时间】:2022-01-18 13:21:27
【问题描述】:
我有一个页面“GetData.cshtml”,我需要在其中填写一些文本框数据并发送到控制器方法。我正在使用 jquery 向控制器方法发送数据。
//GetData.cshtml
$(document).ready(function () {
$('#btn_sbmt_recommendation').click(function () {
$.post("/RegistrationModels/Registration_card",
{
firm_id: $('#id_reg_id').val(),
amount: $('#id_amount').val()
});
console.log("job done....");
});
})
在调试应用时,成功调用了控制器方法。
public ActionResult Registration_card(string reg_id, string amount)
{
try
{
// code block
return View(updated_firm);
}
catch (Exception ex) { throw; }
}
根据我的要求,我想在Registration_card.cshtml 页面中显示数据,但它没有重定向到页面。
jquery 块中的控制台消息console.log("job done...."); 正在显示。这意味着页面又回到了GetData.cshtml。是因为使用 jquery 调用控制器方法吗?
通过 jquery 调用控制器方法Registration_card 后,如何转到页面Registration_card.cshtml。
我也尝试了下面的代码,但它也不起作用。
public ActionResult Registration_card(string firm_id, string ward_calani_num, string amount)
{
try
{
// code block
return RedirectToAction("Registration_card", updated_firm);
}
catch (Exception ex) { throw; }
}
【问题讨论】:
-
这就是 AJAX 的工作原理。它忽略服务器端重定向。如果你想重定向页面,那么 AJAX 请求本身就变得几乎无关紧要了。
-
console.log("job done....");是 outside jquery 调用,因此与它是否正常工作无关(删除 $.ajax 调用,console.log 仍然会触发) -
RedirectToAction返回带有新 url 的 302。浏览器“正常”地处理这个 - 通过获取 302 响应然后对提供的 url 进行 second 调用。您只有第一次调用,因此在您的后回调/错误处理程序中,您需要检查 302,然后在代码中重定向页面(就像浏览器在地址栏中输入 url 时所做的那样) - if i> 这就是您想要处理它的方式(上面提到的替代方法是让表单提交)。它不会是自动的 -
您将在 ajax 调用的“回调”方法中处理它......(您的控制器将其数据返回给回调......因为这就是所谓的方法......)序列化整个表单,所以像“ formresult = $('#'+formID).serialize(); $.post("/RegistrationModels/Registration_card", formresult, function(data){... 做你想做的事data here... 或者只是使用 location.assign(myurl.com)....});... 设置浏览器的位置...所以第三个参数是回调,它是一个匿名函数,一旦方法返回就会执行东西。
-
api.jquery.com/jQuery.post/… 如果需要取回一些重定向使用的参数,用JSON比较方便...如果这样做,将控制器方法的返回类型设置为Task...所以公开 Task
Registration_card...
标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-4