Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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 在视图中读取返回值​;从控制器AJAX/ASP.NET更新新_Javascript_Asp.net_Json_Ajax_Asp.net Core - Fatal编程技术网

Javascript 在视图中读取返回值​;从控制器AJAX/ASP.NET更新新

Javascript 在视图中读取返回值​;从控制器AJAX/ASP.NET更新新,javascript,asp.net,json,ajax,asp.net-core,Javascript,Asp.net,Json,Ajax,Asp.net Core,由selectbox调用进入函数“getDepAndMan()” 有一个从选择框中获取的值(works) 调用控制器“GetDepartmentAndManager”(works)中的函数 控制器返回值(工作) {Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable我发现在GetDepartmentAndManager中没有使用传递的参数userID: var danePracownika = ... .Where(x =>

由selectbox调用进入函数“getDepAndMan()”

  • 有一个从选择框中获取的值(works)

  • 调用控制器“GetDepartmentAndManager”(works)中的函数

  • 控制器返回值(工作)


    {Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable我发现在
    GetDepartmentAndManager
    中没有使用传递的参数
    userID

    var danePracownika = ... .Where(x => x.Id == IntIdCzlowieka)...
    
    应该是
    ,其中(x=>x.Id==userId)

    接下来我想到的是您在控制器操作中意外获得的值;根据JS代码,我想说这不是您传递的员工ID,而是字符串化对象
    {“nazwaValueId”:…}
    在最好的情况下,将由服务器处理,您将获得原始字符串作为
    userId
    的值(除非您定义了
    IModelBinder
    类,该类将处理从strigified
    {“nazwaValueId”:…}
    到该字段值的转换,您可以找到更多信息)

    哦,顺便说一句-请尽量避免混合语言。我在公司有一个朋友,他被迫使用德语项目,他们的所有代码都是用德语编写的-你肯定不会喜欢使用它。但是如果这是一个仅由PL为PL制作的项目,我认为这是一种可以接受的方法

    此外,我强烈建议您不要使用HTTP
    POST
    方法获取数据。长话短说,有一个惯例,即
    GET
    请求用于获取数据,您可以在不影响国家的情况下调用它(作者:阿尔·尼·帕米·塔姆))而
    POST
    用于保存/修改数据,返回时应始终重定向到
    GET
    方法。您可以阅读更多信息

    编辑:

    好的,出于某种原因,我发现当前表单中的调用不是以正文形式发送数据,而是以表单形式发送数据。我不知道,我不使用jQuery。但下面是请求:

    所以我把行动的签名改为

    public ActionResult GetDepartmentAndManager([FromForm]字符串用户ID)
    
    开始工作。也许在你这方面,它工作得很好,我不知道。但我发现,在向客户发送响应时,我们最终得到了……以下结果:

    因此,您可以看到Ajax或服务器将JSON键更改为kebabCase而不是PascalCase,这就是为什么您会得到未定义的值。因为您正在读取的属性不存在。只需查看它:
    alert(danePracownika.userdepartment+“”+danePracownika.userManager);

    更新:

    我检查过了,这不是服务器的故障:

    不清楚您实际上在问什么。您如何在Ajax中解包从控制器发送的信息?因为它对我来说工作不正常:(@krolPodGora)您可以直接传递SelectBox
    var userId=$(“#idName”).dxSelectBox(“实例”).option(“value”)
    然后
    数据:{“userId”:userId}
    但我需要另一面,从控制器到Ajax,我无法读取那里的数据
    [HttpPost]
    public ActionResult GetDepartmentAndManager(string userId) 
    {
    
      dynamic serializer = JsonConvert.DeserializeObject<IDictionary>(userId);
    
                var IdCzlowieka = serializer["nazwaValueId"];
    
                int IntIdCzlowieka = Convert.ToInt32(IdCzlowieka);
    
                var danePracownika = _uzytkownicyContext.Uzytkownicy.Where(x => x.Id == IntIdCzlowieka).Select(s => new
                {
                    UserDepartament = s.Departament,
                    UserManager = s.ManagerLogin
    
                });
    
    
       return Json(danePracownika);
    }
    
    var danePracownika = ... .Where(x => x.Id == IntIdCzlowieka)...