我如何使AJAX从MVC中的控制器中抓取数据?
How do I make AJAX grab the data from the controller in MVC?
我有这个AJAX调用我想做的是让控制器将字符串作为JSON对象返回给AJAX调用所在的视图。事情是这样的。我不知道怎么做,也不知道哪节课能帮我做。我试过的所有方法都不起作用。我的问题是我什么时候用$。post方法我如何使AJAX"抓取"数据从控制器回来?
既然有人评论我的Javascript,我不介意,我以后会修复它。问题是
我如何返回任何我想从控制器在MVC?控制器是我需要帮助的地方
这是我的电话:
<script>
$(document).ready(function () {
alert("document ready");
// Attach a submit handler to the form
$("#searchForm").submit(function (event) {
alert("submitsearchForm");
//event.preventDefault();
// Get some values from elements on the page:
var $form = $(this),
query2 = $form.find("input[id='query']").val(),
url = "/umbraco/Surface/SearchDictionarySurface/HandleDictionarySearching/";
alert("query2" + query2);
// Send the data using post
var posting = $.post(url, { query: query2 });
alert(url);
//Put the results in a div
posting.done(function (query2) {
var content = //bla bla bla;
$("#result").empty().append(content);
alert(query2);
});
});
});
</script>
另外,我正在使用Umbraco。这就是为什么表面控制器:
using MyUmbraco.Models;
using System.Web.Mvc;
using Umbraco.Web.Mvc;
namespace MyUmbraco.Controllers
{
public class SearchDictionarySurfaceController : SurfaceController
{
// GET: SearchDictionarySurface
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult HandleDictionarySearching(string query)
{
if (!string.IsNullOrEmpty(query))
{
var query2 = Json.parse(query);
//return Json object????
//I NEED HELP HERE
}
else
{
return Json(new
{
redirectUrl = Url.Action("Index", "Home"),
isRedirect = true
});
}
}
}
}
所以,对于那些可能需要我所需要的帮助的新手(因为我一直在寻找这个东西很多年了,没有人回应),你可以这样做:
你的JQuery回调函数和你的控制器必须有相同的变量。例句:
控制器:
public JsonResult ExampleName(string query)
{
if (!string.IsNullOrEmpty(query))
{
//YOUR CODE HERE
return Json(yourDataHere);
}
else
{
return Json(new
{
redirectUrl = Url.Action("Index", "Home"),
isRedirect = true
});
}
}
和JQuery回调函数
posting.done(function (data) {
//your callback function here
});
这是JQuery在返回控制器时知道从控制器"抓取"什么的技巧。确保返回Json(yourDataHere)。如果你想知道,是的,只要在函数中写入'data',它就会自己从控制器中获取yourDataHere。
另外,确保在表单和控制器中都有AntiForgeryToken,或者两者都没有。如果你只在你的控制器中有它,它将不能让你通过JQuery控制一切。
你的javascript有一些问题。
试着遵循这个模式:
posting.done(function (response) {
var JSONData = JSON.parse(response);
// do something with your json
// ....
// Then append your results in your div.
$('YOUR DIV SELECTOR').html(THAT YOU WANT TO DISPLAY);
});
如果你想返回对象和JSON,使用WebAPI控制器而不是表面控制器,它只会返回一个ActionResult。你可以让Surface控制器返回JSON,但你最好使用API控制器,因为它默认会返回JSON对象,这是你想要的吗?
这里有一些WebAPI控制器的文档!
相关文章:
- 在控制器和数据对象之间同步数据
- 使用Ajax请求rails控制器数据
- 如何将控制器数据加载到javascript数组中
- 如何在 angular js 中访问子控制器内的父控制器数据
- 按天在视图中应用控制器数据
- 跳跃运动控制器数据的清理
- AngularJS-通过服务从指令更新控制器数据(this.model语法)
- AngularJS通过服务自动更新控制器数据
- AJAX中的AngularJS控制器数据并不总是有效的
- 自定义指令控制器数据与工厂数据同步
- 来自路由提供程序的访问控制器数据
- Angularjs的服务和控制器数据不同步
- Ui-sref阻止访问控制器数据或视图
- 控制器数据没有传递给指令
- Angular ui-router多个嵌套和控制器数据
- 停止搜索解析控制器数据
- 使用AngularJS指令修改控制器数据
- 如何设置第一个控制器数据另一个控制器
- 控制器数据以角度设置另一页
- 如何在viewjavascript中访问playframework's控制器数据