Javascript 使用jquery从.cshtml页面调用控制器操作
我试图从jQueryUI对话框调用控制器操作。 我目前拥有的是:Javascript 使用jquery从.cshtml页面调用控制器操作,javascript,jquery,asp.net-mvc-3,jquery-ui,razor,Javascript,Jquery,Asp.net Mvc 3,Jquery Ui,Razor,我试图从jQueryUI对话框调用控制器操作。 我目前拥有的是: .html("<p><textarea name=\"TextMessage\" id=\"textItems\" rows=\"10\" cols=\"72\" /><br /><br /><input type=\"button\" style=\"float:right;\" id=\"submitData\" onclick=\"Test()\" value=\"Sub
.html("<p><textarea name=\"TextMessage\" id=\"textItems\" rows=\"10\" cols=\"72\" /><br /><br /><input type=\"button\" style=\"float:right;\" id=\"submitData\" onclick=\"Test()\" value=\"Submit\" /></p>");
我想知道我是否做错了什么,我正试图让这项工作,但没有任何成功。当我试图通过直接启动控制器时,它工作正常,因此这意味着脚本设置不正确。您应该尝试:
url:'@Url.Action("GetData", "Report")'
MVC在查找控制器时,会自动将“Controller”添加到第二个参数的末尾
编辑:
此代码可能适用于:
function Test() {
$.ajax({
type: "GET",
dataType: "json",
url: '@Url.Action("GetData", "Report")',
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data);
},
error: function(xhr, status, error) {
alert(error);
}
});
}
编辑2:
已更改为使用Razor语法,因此此代码将与Razor/MVC3一起使用。您应该尝试:
url:'@Url.Action("GetData", "Report")'
MVC在查找控制器时,会自动将“Controller”添加到第二个参数的末尾
编辑:
此代码可能适用于:
function Test() {
$.ajax({
type: "GET",
dataType: "json",
url: '@Url.Action("GetData", "Report")',
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data);
},
error: function(xhr, status, error) {
alert(error);
}
});
}
编辑2:
更改为使用Razor语法,因此此代码将与Razor/MVC3一起使用。因为您正在调用返回
json
对象的操作方法,所以您可以使用该方法
功能测试(){
$.getJSON(
@this.Url.Action(“GetData”、“Report”),
功能(数据){
警报(数据);
}
});
};
因为您正在调用返回json
对象的操作方法,所以可以使用该方法
功能测试(){
$.getJSON(
@this.Url.Action(“GetData”、“Report”),
功能(数据){
警报(数据);
}
});
};
您正在Url.Action上使用MVC-2语法。这应该起作用:
function Test() {
$.ajax(
{
url: '@Url.Action("GetData", "Report")',
dataType: 'json',
success: function (data) {
alert(data);
},
error: function (x, err, desc) {
alert(desc);
}
}
);
};
您正在Url.Action上使用MVC-2语法。这应该起作用:
function Test() {
$.ajax(
{
url: '@Url.Action("GetData", "Report")',
dataType: 'json',
success: function (data) {
alert(data);
},
error: function (x, err, desc) {
alert(desc);
}
}
);
};
您也可以尝试以下操作:
您也可以尝试jsaction:
我们可以很容易地使用Javascript/Jquery调用控制器方法,如下所示: 假设下面是要调用的控制器方法,返回一些类对象的数组。让班级成为“A”
public JsonResult SubMenu_Click(string param1, string param2)
{
A[] arr = null;
try
{
Processing...
Get Result and fill arr.
}
catch { }
return Json(arr , JsonRequestBehavior.AllowGet);
}
以下是复杂类型(类)
现在轮到JQUERY调用上述控制器方法了。下面是调用控制器方法的Jquery函数
function callControllerMethod(value1 , value2) {
var strMethodUrl = '@Url.Action("SubMenu_Click", "Home")?param1=value1 ¶m2=value2'
$.getJSON(strMethodUrl, receieveResponse);
}
function receieveResponse(response) {
if (response != null) {
for (var i = 0; i < response.length; i++) {
alert(response[i].property1);
}
}
}
函数调用控制器方法(值1、值2){
var strmethodur='@Url.Action(“单击子菜单”,“主页”)?param1=value1¶m2=value2'
$.getJSON(strmethodur,receiveResponse);
}
功能接收响应(响应){
if(响应!=null){
对于(变量i=0;i
在上面的Jquery函数'callControllerMethod'中,我们开发了控制器方法url,并将其放入名为'strmethodur'的变量中,然后调用Jquery API的getJSON方法
ReceiveVerResponse是接收控制器方法的响应或返回值的回调函数
这里我们使用了JSON,因为我们不能使用C#class对象
直接转换到javascript函数中,因此我们将controller方法中的结果(arr)转换为JSON对象,如下所示:
Json(arr,JsonRequestBehavior.AllowGet)强>
并返回该Json对象
现在,在Javascript/JQuery的回调函数中,我们可以使用这个生成的JSON对象,并相应地在UI上显示响应数据
有关更多详细信息,我们可以使用Javascript/Jquery非常轻松地调用控制器方法,如下所示: 假设下面是要调用的控制器方法,返回一些类对象的数组。让班级成为“A”
public JsonResult SubMenu_Click(string param1, string param2)
{
A[] arr = null;
try
{
Processing...
Get Result and fill arr.
}
catch { }
return Json(arr , JsonRequestBehavior.AllowGet);
}
以下是复杂类型(类)
现在轮到JQUERY调用上述控制器方法了。下面是调用控制器方法的Jquery函数
function callControllerMethod(value1 , value2) {
var strMethodUrl = '@Url.Action("SubMenu_Click", "Home")?param1=value1 ¶m2=value2'
$.getJSON(strMethodUrl, receieveResponse);
}
function receieveResponse(response) {
if (response != null) {
for (var i = 0; i < response.length; i++) {
alert(response[i].property1);
}
}
}
函数调用控制器方法(值1、值2){
var strmethodur='@Url.Action(“单击子菜单”,“主页”)?param1=value1¶m2=value2'
$.getJSON(strmethodur,receiveResponse);
}
功能接收响应(响应){
if(响应!=null){
对于(变量i=0;i
在上面的Jquery函数'callControllerMethod'中,我们开发了控制器方法url,并将其放入名为'strmethodur'的变量中,然后调用Jquery API的getJSON方法
ReceiveVerResponse是接收控制器方法的响应或返回值的回调函数
这里我们使用了JSON,因为我们不能使用C#class对象
直接转换到javascript函数中,因此我们将controller方法中的结果(arr)转换为JSON对象,如下所示:
Json(arr,JsonRequestBehavior.AllowGet)强>
并返回该Json对象
现在,在Javascript/JQuery的回调函数中,我们可以使用这个生成的JSON对象,并相应地在UI上显示响应数据
有关更多详细信息如果要返回JSON,则需要设置数据类型:“JSON”属性。您还应该包括和“error:function(…”在您的ajax调用中。似乎您缺少了
Test
函数的右括号,但这可能只是一个输入错误。@JackieChiles我更新了Test函数,看看它是否正常,没有做任何事情well@rontornambe能不能给我举个例子,这对我很有帮助。谢谢advance@Laziale:当你说你能要“直接启动控制器”,您是指(在浏览器中)导航到该URL吗,或者您的意思是,如果您将该URL设置为AJAX调用的URL
参数,它就会起作用吗?顺便说一句,通过编辑,您现在在Test
的右括号后有一个尾随分号。如果您返回JSON,您需要设置数据类型:“JSON”属性。您还应该包括和“error:function(…”在您的ajax调用中。您似乎缺少Test
函数的右括号,但这可能只是一个输入错误。@JackieChiles我更新了