求助:通过ajax查询怎么改?

KyKiske22 2016-09-22 11:57:03
原本写的增删改都没有问题,但是查询就不显示结果了。目前Controller也和增删改一样,可以看到JSON。
ajax代码如下:
//查询用户数据按钮
$('#btnSearch').click(function () {
var user =
{
username: $('#UserName_Q').val(),
loginName: $('#LoginName_Q').val(),
userGender: $('#UserGender_Q').val()
};
$.ajax({
type: "POST",
url: "/Users/QueryData",
data: user,
dataType: "json",
success: function (data) {
if (data.status == 'OK') {
$.messager.alert("信息", "查询成功");
$('#datagrid').datagrid('reload', user);
}
else $.messager.alert("信息", data.data);
},
error: function () {
alert(data.Status);
$.messager.alert("信息", "发生错误");
}
});
});
请大神看一下问题出在哪?此时点击查询按钮后弹出undefined
...全文
451 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
目前的问题点击查询后还是显示原先读取的数据而不是查询后对应json的数据、
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
引用 7 楼 Return_false 的回复:
后台返回试试修改为
return Content(json, "application/json"); 
没反应。没用 我把源代码都贴出来看看把 控制器: [HttpPost] public ActionResult QueryData(UsersModel usersModel) { /*权限验证*/ if (UserIdentityManager.isLogin(this) == false) { return Utils.redirectTopToLogin(); } UsersManager um = new UsersManager(); usersModel.UserName = Request["userName"]; usersModel.UserGender = Request["UserGender"]; usersModel.LoginName = Request["LoginName"]; LinkedList<UsersModel> llusersModel = um.getQueryUsers(usersModel);//根据条件查询用户信息 string json = um.userModelsToJSArrayString(llusersModel);//这个是将结果转为JSON的方法,已经封装好了 return Content(json, "application/json"); } 前端html: <fieldset style=" border:1px solid #95B8E7; margin-bottom:5px;" class="font-default" > <legend class="font-default" >查询信息</legend> <div id="querybar"> <div> <div style="float:left;position:relative;left:1px; padding:10px"> <div style="float:left;" >   姓名:</div> <div style="float:left; "> <input class="easyui-text" id="UserName_Q" style="font-family:微软雅黑; width:170px;" /> </div> </div> <div style="float:left;position:relative;left:2px; padding:10px;"> <div style="float:left;" >   用户名:</div> <div style="float:left; "> <input class="easyui-text" id="LoginName_Q" style="font-family:微软雅黑; width:170px;" /> </div> </div> <div style="float:left;position:relative;left:3px; padding:10px;"> <div style="float:left;" class="font-default">性别:</div> <div style="float:left;"> <input class="easyui-text" id="UserGender_Q" style="font-family:微软雅黑;width:170px;" /> </div> </div> <div style="float:left; padding:10px;"> <a id="btnSearch" class="easyui-linkbutton" style=" width:80px;" >查询</a> </div> </div> </div> </fieldset> 查询方法; <script type="text/javascript"> $('#btnSearch').click(function () { var user = { username: $('#UserName_Q').val(), loginName: $('#LoginName_Q').val(), userGender: $('#UserGender_Q').val() }; $.ajax({ type: "POST", url: "/Users/QueryData", data: user, success: function (data) { $('#datagrid').datagrid('reload', user); $.messager.alert("信息", "查询成功"); }, error: function () { $.messager.alert("信息", "发生错误"); } }); }); </script>
  • 打赏
  • 举报
回复
后台返回试试修改为
return Content(json, "application/json"); 
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
引用 3 楼 xomix 的回复:
[quote=引用 2 楼 KyKiske22 的回复:] [quote=引用 1 楼 Return_false 的回复:] 应该是进入了error吧,你的请求路径是否正确?
路径没错的,Controller里面都能走,最后一步JSON里面的数据也能看得到 目测是进入else里的,提示的不是error[/quote] 先看看 data.status吧[/quote] 我把status都去了,JSON就是按条件查询结果的数据,alert(data)显示的就是JSON数据,但是view还是显示原先读取的数据,是不是success里面的内容需要改呢?? 现在json问题解决了,就是新查询的json内容无法通过ajax在view界面中显示
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
我把status都去了,JSON就是按条件查询结果的数据,alert(data)显示的就是JSON数据,但是view还是显示原先读取的数据,是不是success里面的内容需要改呢?? 现在json问题解决了,就是新查询的json内容无法通过ajax在view界面中显示
  • 打赏
  • 举报
回复
如果进入了success,那么直接弹出 alert(data);看看响应内容是啥,按理说你应该返回JSON格式 例如
return Json(new { OK = false, Message = ex.ToString() });
  • 打赏
  • 举报
回复
引用 2 楼 KyKiske22 的回复:
[quote=引用 1 楼 Return_false 的回复:] 应该是进入了error吧,你的请求路径是否正确?
路径没错的,Controller里面都能走,最后一步JSON里面的数据也能看得到 目测是进入else里的,提示的不是error[/quote] 先看看 data.status吧
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
引用 1 楼 Return_false 的回复:
应该是进入了error吧,你的请求路径是否正确?

路径没错的,Controller里面都能走,最后一步JSON里面的数据也能看得到

目测是进入else里的,提示的不是error
  • 打赏
  • 举报
回复
应该是进入了error吧,你的请求路径是否正确?
  • 打赏
  • 举报
回复
说了那么多,还不如直接在浏览器里F12,看请求返回的各种信息
its_good 2016-09-22
  • 打赏
  • 举报
回复
引用 9 楼 KyKiske22 的回复:
目前的问题点击查询后还是显示原先读取的数据而不是查询后对应json的数据、
success: function (data) { $('#datagrid').datagrid('reload', user); $.messager.alert("信息", "查询成功"); } 表示对楼主的逻辑不理解 : 1、data为ajax请求返回的数据,即查询结果。 那显示“查询后对应json的数据”的那段代码在哪里? 2、$('#datagrid').datagrid('reload', user); 这应该是重新加载数据,即向后台发送一个请求,请求url为你初始化grid指定的,请求参数为user这个变量对应的键值对,前台在得到后台返回的数据后更新数据,实现刷新当前页的功能。(参考:https://my.oschina.net/wfire/blog/127794) (用F12 查看下网络请求) 既然data你都已经丢弃不用,直接刷新页面,为什么还要用ajax白白跑一趟? 是我理解错了? 麻烦楼主解释下
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
已经解决了,用onbeforeload解决了,谢谢大家
正怒月神 版主 2016-09-22
  • 打赏
  • 举报
回复
前段的ajax提交数据,浏览器调试提交的信息是什么?
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
引用 14 楼 u010717459 的回复:
是不是进error了 然后data又没有定义 在console里输出错误了
这次看了下,没进入error。data也是有定义的。我用alert(data)看了数据没错,是json对象类型。目前我把status去掉了。success进入后没有返回查询结果数据JSON
雷诺兹 2016-09-22
  • 打赏
  • 举报
回复
是不是进error了 然后data又没有定义 在console里输出错误了
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
引用 12 楼 wangzhiwei0721 的回复:
return json(json, JsonRequestBehavior.AllowGet)试试这个呢
都说了很多遍了后台我看不出什么问题,想麻烦大神们看看前端的ajax那块怎么改。。。。。。。。。 试过了 还是没用。
王志威丶 2016-09-22
  • 打赏
  • 举报
回复
return json(json, JsonRequestBehavior.AllowGet)试试这个呢
KyKiske22 2016-09-22
  • 打赏
  • 举报
回复
引用 10 楼 hanjun0612 的回复:
后台的整个方法包括参数发一下。 还有var user = { username: $('#UserName_Q').val(), loginName: $('#LoginName_Q').val(), userGender: $('#UserGender_Q').val() }; 改成下面试试 var user = { "username": $('#UserName_Q').val(), "loginName": $('#LoginName_Q').val(), "userGender": $('#UserGender_Q').val() };
没用,不是这个问题,添加修改也是这么写的没有任何问题。我觉得后端问题不大,关键是前端怎么读取json是个问题。都改了一上午了还是没用。 后台: [HttpPost] public ActionResult QueryData(UsersModel usersModel) { /*权限验证*/ if (UserIdentityManager.isLogin(this) == false) { return Utils.redirectTopToLogin(); } UsersManager um = new UsersManager(); usersModel.UserName = Request["userName"]; usersModel.UserGender = Request["UserGender"]; usersModel.LoginName = Request["LoginName"]; LinkedList<UsersModel> llusersModel = um.getQueryUsers(usersModel);//根据条件查询用户信息 string json = um.userModelsToJSArrayString(llusersModel); return Content(json, "application/json");//这里显示查询后的json,经测试有数据 }
正怒月神 版主 2016-09-22
  • 打赏
  • 举报
回复
后台的整个方法包括参数发一下。 还有var user = { username: $('#UserName_Q').val(), loginName: $('#LoginName_Q').val(), userGender: $('#UserGender_Q').val() }; 改成下面试试 var user = { "username": $('#UserName_Q').val(), "loginName": $('#LoginName_Q').val(), "userGender": $('#UserGender_Q').val() };

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧