jquery ajax’post’来电
我是jQuery和Ajax的新手,我遇到了’post’的问题。
我正在使用jQuery Ajax“post”调用将数据保存到数据库。 当我尝试保存数据时,它将null传递给我的C#方法。 jQuery看起来像这样:
function saveInfo(id) { var userID = id; var userEmail = $('.userEmail').val(); var userName = $('.userName').val(); var dataJSON = {"userID": userID, "userEmail": userEmail, "userName": userName}; $.ajax({ type: 'POST', url: '../../Services/AjaxServices.svc/SaveUser', data:JSON.stringify(dataJSON), contentType: 'application/json; charset=utf-8', dataType: 'json' }); return false; }`
.userEmail和.userName是对输入字段的类引用。 C#代码如下所示:
[ServiceContract(Namespace = "https://testUsePage.com")] [AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)] public class AjaxServices { [OperationContract] [WebInvoke(Method = "POST", BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)] public void SaveUser(User user) { //code here handles save } }
我在’SaveUser’方法中设置了断点,并且传递的User对象始终为null。 谢谢!
编辑:我在ajax调用和WebInvoke属性中将’POST’切换为’GET’。 将一个参数({“UserID”:UserID})传递给具有签名的方法(public void SaveUser(string UserID))到达断点,并传递UserID,没有exception。 将其切换回post会立即导致内部服务器错误。
您应该以这种方式发送您的用户数据:
{user:{userID:1,…}}
因为你正在使用wrappedrequest。 你的json中的第一个元素应该是你的参数。
其余代码似乎没问题。 你应该使用stringify。
你不需要使用json这么小的东西。 试试这个
function saveInfo(id) { var userID = id; var userEmail = $('.userEmail').val(); var userName = $('.userName').val(); $.ajax({type: 'POST', url: '../../Services/AjaxServices.svc/SaveUser/?userID='+userID+"&userEmail="+userEmail+"&userName="+userName, }); return false; }
您没有将WebInvoke属性的RequestFormat属性设置为json。
同样在$ .ajax调用中发送数据:dataJSON而没有JSON.stringify调用。
如果失败,请尝试以下方式发布表单编码信息(默认值)而不是json。 客户端
$.post('../../Services/AjaxServices.svc/SaveUser', {"userId": userID, "userEmail": userEmail, "userName": userName} );
服务器端
[WebInvoke(Method = "POST", UriTemplate = "SaveUser?userId={userId}&userEmail={userEmail}&userName={userName}")] public void SaveUser(string userId, string userEmail, string userName)
您是否尝试在Firefox的Firebug中打开Net选项卡并分析您的调用以查看发布到Web服务的实际数据是什么? 试试看,如果那里的数据是空的那么你知道你的Javascript中有些东西是错的,那么试着调试你的Javascript。
但问题可能是您的Web服务方法签名期望将User对象作为参数,但您传递了一堆文字参数。 您可以将方法签名更改为类似的内容,它可能会起作用:
public void SaveUser(string userID, string userEmail, string userName)
我看了你的评论,试试这个:
客户端脚本中的JSON对象没有字符串化
public class AjaxServices { [OperationContract] [WebInvoke(Method = "POST", BodyStyle=WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] public void SaveUser(string userID, string userEmail, string userName) { //code here handles save } }
简单地说: $.ajax()
的data
属性是data
的映射(对象),而不是数据字符串。 在发送之前不要对对象进行字符串化:
上述就是C#学习教程:jquery ajax’post’来电分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var dataJSON = {"userID": userID, "userEmail": userEmail, "userName": userName}; $.ajax({ type: 'POST', url: '../../Services/AjaxServices.svc/SaveUser', data: dataJSON, contentType: 'application/json; charset=utf-8', dataType: 'json' });
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1019510.html