Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从jquery调用值并将值传递给控制器方法_Javascript_Jquery_Asp.net Mvc_Getjson - Fatal编程技术网

Javascript 如何从jquery调用值并将值传递给控制器方法

Javascript 如何从jquery调用值并将值传递给控制器方法,javascript,jquery,asp.net-mvc,getjson,Javascript,Jquery,Asp.net Mvc,Getjson,我有一个从getJSON方法调用的http控制器。它工作得很好。但现在我想在控制器方法的处理程序中执行相同的操作。我通过getJSON向处理程序发送一个值,它使用该值执行 这是我的getJSON $(document).ready(function () { $.getJSON('ProfileHandler.ashx', { 'ProfileName': 'Profile 1' }, function (data) { $.each(data, function (k,

我有一个从getJSON方法调用的http控制器。它工作得很好。但现在我想在控制器方法的处理程序中执行相同的操作。我通过getJSON向处理程序发送一个值,它使用该值执行

这是我的getJSON

$(document).ready(function () {
    $.getJSON('ProfileHandler.ashx', { 'ProfileName': 'Profile 1' }, function (data) {
        $.each(data, function (k, v) {
            alert(v.Attribute+' : '+v.Value);               
        });            
    });
});
这是我的经纪人

public void ProcessRequest(HttpContext context)
    {
        try
        {                
            string strURL = HttpContext.Current.Request.Url.Host.ToLower();
            //string ProfileName = context.Request.QueryString["profilename"];
            string strProfileName = context.Request["ProfileName"];

            GetProfileDataService GetProfileDataService = new BokingEngine.MasterDataService.GetProfileDataService();
            IEnumerable<ProfileData> ProfileDetails = GetProfileDataService.GetList(new ProfileSearchCriteria { Name = strProfileName });
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            string strSerProfileDetails = javaScriptSerializer.Serialize(ProfileDetails);
            context.Response.ContentType = "text/json";
            context.Response.Write(strSerProfileDetails);
        }
        catch
        {
        }                        
    }
public void ProcessRequest(HttpContext上下文)
{
尝试
{                
string strURL=HttpContext.Current.Request.Url.Host.ToLower();
//string ProfileName=context.Request.QueryString[“ProfileName”];
字符串strProfileName=context.Request[“ProfileName”];
GetProfileDataService GetProfileDataService=新建BokingEngine.MasterDataService.GetProfileDataService();
IEnumerable ProfileDetails=GetProfileDataService.GetList(新ProfileSearchCriteria{Name=strProfileName});
JavaScriptSerializer JavaScriptSerializer=新的JavaScriptSerializer();
字符串strSerProfileDetails=javaScriptSerializer.Serialize(ProfileDetails);
context.Response.ContentType=“text/json”;
context.Response.Write(strSerProfileDetails);
}
抓住
{
}                        
}

如何调用“ProfileName”并将其传递给控制器方法?

您的代码是正确的,您应该能够使用以下内容检索ProfileName:

string strProfileName = context.Request["ProfileName"];
如果要将其传递给控制器操作,只需定义此操作:

public ActionResult SomeAction(string profileName)
{
    var profileDataService = new BokingEngine.MasterDataService.GetProfileDataService();
    var request = new ProfileSearchCriteria { Name = profileName };
    var profileDetails = profileDataService.GetList(request);
    return Json(profileDetails, JsonRequestBehavior.AllowGet);
}
然后使用AJAX调用控制器操作:

<scirpt type="text/javascript">
    $(document).ready(function () {
        var url = '@Url.Action("SomeAction")';
        $.getJSON(url, { profileName: 'Profile 1' }, function (data) {
            $.each(data, function (k, v) {
                alert(v.Attribute + ' : ' + v.Value);
            });            
        });
    });
</script>

$(文档).ready(函数(){
var url='@url.Action(“SomeAction”);
$.getJSON(url,{profileName:'Profile 1'},函数(数据){
$。每个(数据、函数(k、v){
警报(v.Attribute+':'+v.Value);
});            
});
});

你几乎拥有了它。以下是一个例子:

Javascript

function someFunction(e) {
    $.post("@Url.Action("MethodName", "ControllerName")", { ParameterName: e.value }, function(data) {
       $("#someDiv").html = data;
    });
}
C#控制器

[HttpPost]
public ActionResult MethodName(string ParameterName)
{
    return "Hello " + ParameterName;
}

如果您将自己的名字传递给JavaScript函数“someFunction”,控制器将返回“Hello[your name]”。帮助?

您不必使用
GET
发布
数据,但无论如何,这些参数通常都在request object中是的,仅限request。工作正常。我的问题不是控制器操作不能从ajax调用中调用。您是否验证了
url
参数是否正确?在本例中,我使用了
@Url.Action(“SomeAction”)
服务器端帮助程序来生成它,但在您的情况下,您使用的是Razor,并且该脚本是在视图中还是在单独的文件中?确保传递给
$.getJSON
方法的url是正确的。还可以查看FireBug,查看AJAX请求发送到哪个地址以及失败的原因。我创建了一个名为“ProfileDetails”和操作“GetProfile”的控制器。我想通过getJSON从单独的aspx页面调用此操作。好的,然后确保已正确设置此控制器操作的url(传递给
$.getJSON
方法的第一个参数)。以下是如何在您的ASPX页面中做到这一点:
var url=''当然,它在ASPX网络表单中不起作用!这就是剃刀语法。请为视图引擎使用正确的语法。