通过javascript调用MVC操作方法,但不使用AJAX
Call MVC action method by javascript but not using AJAX
我有一个 MVC3 操作方法,其中包含 3 个参数,如下所示:
var url = "/Question/Insert?" + "_strTitle='" + title + "'&_strContent='" + content + "'&_listTags='" + listTags.toString() + "'";
我想通过普通的javascript函数而不是AJAX来调用它(因为没有必要使用AJAX函数)我尝试使用此功能,但它不起作用:
window.location.assign(url);
它没有跳转到问题控制器的插入操作。
有人愿意帮助我吗?多谢
这是更详细的
我想在数据库中插入新的问题,但我必须从CKeditor获取数据,所以我必须使用下面的这个函数来获取和验证数据
// insert new question
$("#btnDangCauHoi").click(function () {
//validate input data
//chủ đề câu hỏi
var title = $("#txtTitle").val();
if (title == "") {
alert("bạn chưa nhập chủ đề câu hỏi");
return;
}
//nội dung câu hỏi
var content = GetContents();
content = "xyz";
if (content == "") {
alert("bạn chưa nhập nội dung câu hỏi");
return;
}
//danh sách Tag
var listTags = new Array();
var Tags = $("#list_tag").children();
if (Tags.length == 0) {
alert("bạn chưa chọn tag cho câu hỏi");
return;
}
for (var i = 0; i < Tags.length; i++) {
var id = Tags[i].id;
listTags[i] = id;
//var e = listTags[i];
}
var data = {
"_strTitle": title,
"_strContent": content,
"_listTags": listTags.toString()
};
// $.post(url, data, function (result) {
// alert(result);
// });
var url = "/Question/Insert?" + "_strTitle='" + title + "'&_strContent='" + content + "'&_listTags='" + listTags.toString() + "'";
window.location.assign(url); // I try to use this, and window.location also but they're not working
});
此 URL 通过 POST 方法调用下面的 MVC 操作"插入"
[HttpPost]
[ValidateInput(false)]
public ActionResult Insert(string _strTitle, string _strContent, string _listTags)
{
try
{
//some code here
}
catch(Exception ex)
{
//if some error come up
ViewBag.Message = ex.Message;
return View("Error");
}
// if insert new question success
return RedirectToAction("Index","Question");
}
如果插入操作成功,它将重定向到索引页面,其中列出了所有问题,包括新问题已插入。如果没有,它将显示错误页面。所以,这就是我不使用 AJAX 的原因
有人帮我吗?谢谢:)
尝试:
window.location = yourUrl;
此外,尝试使用 Fiddler 或其他类似工具来查看重定向是否发生。
编辑:
您的操作需要 HTTP POST 方法,但使用 window.location 将导致 GET 方法。这就是为什么你的行动永远不会被调用的原因。
[HttpPost]
[ValidateInput(false)]
public ActionResult Insert(string _strTitle, string _strContent, string _listTags)
{
// Your code
}
要么更改为 HttpGet(你不应该这样做),要么使用 jQuery 或其他支持 Ajax 的库来执行 POST。不应使用 GET 方法来更新数据。这将给您带来如此多的安全问题,以至于您在解决问题时不知道从哪里开始。
考虑到你已经在使用 jQuery,你不妨一路走下去,使用 Ajax。使用$.post()
方法执行 HTTP POST 操作。
在 $.post() 的回调函数中,您可以在末尾return false
以防止重定向到错误或索引视图。
$.post("your_url", function() {
// Do something
return false; // prevents redirection
});
仅此而已。
你可以尝试改变
var url = "/Question/Insert?" + "_strTitle='" + title + "'&_strContent='" + content + "'&_listTags='" + listTags.toString() + "'";
自
var url = "/Question/Insert?_strTitle=" + title + "&_strContent=" + content + "&_listTags=" + listTags.toString();
我已经删除了单引号,因为它们不是必需的。
如果没有看到你的php代码,虽然不容易找出问题所在。
当您说"它没有跳转到问题控制器的插入操作"时,您的意思是浏览器没有加载该页面,还是在加载 URL 时它没有路由到预期的控制器/操作?
你可以使用iframe,但我建议使用AJAX
<iframe src="" id="loader"></iframe>
<script>
document.getElementById("loader").src = url;
</script>
- 如何使用httpwebrequest在c#中获得网页(使用ajax/javascript的php)的最终响应
- ajax javascript 500 error
- 无法使用ajax/javascript将文件上传到perl脚本
- Ajax Javascript Get JSON value
- 使用ajax/javascript调用php函数
- AJAX - Javascript array to php
- 使用ajax/javascript选择项目并将其添加回mysql
- 我可以使用ajax/javascript/jquery执行curl命令吗
- 通知Ajax/Javascript后台PHP已经完成
- AJAX (JavaScript / PHP), FormData not sending
- AJAX/javascript:解析包含数组的JSON
- AJAX/JavaScript搜索性能优于Java/Oracle
- 使用ajax/javascript和setTimeout重新加载页面2次
- JQuery+Ajax:JavaScript运行时错误:需要函数
- Ajax/Javascript用户状态更新
- 在AJAX javascript中从ASHX获取数据
- 使用 json ajax javascript jquery 和 java 的自动完成搜索栏(无 PHP)
- Ajax JavaScript 复选框更改不起作用
- 如何将值从 AJAX Javascript 传递到 PHP 文件
- 使用 AngularJS/AJAX/JavaScript 调用 PHP