ajax post请求一个xml的对象,传不到后台报错

ajax Post请求,后台接受的是string类型,对象传json报文可以成功,但是传个xml报文就报错
request: obj.request 这个request后台接收的是string类型,前台obj.request是json就没问题,但是传个xml报文就报错。请各位大神帮忙看看怎么解决?

SaveInterface: function () {

            var obj = this.template;
            console.log(obj.requestType);
            console.log(obj.request);
            if (obj.interfacename == "" || obj.request == "") {
                alert("接口名或Request为空!");
            }
            else {
                var $promise = $.ajax({
                    url: '@Url.Action("CreateInterface")',
                    type: "post",
                    dataType: "json",
                    data: { serviceName: obj.ServiceName, interfaceName: obj.interfacename, requestType: obj.requestType, request: obj.request }
                });
                $promise.done(function (result) {
                    if (result.isSuccess) {
                        alert("保存成功");
                        //添加服务信息到服务列表
                        vm.interfaceNames.push(obj.interfacename);
                        art.dialog.opener.art.dialog.list['Addinterface'].close();
                    }
                    else {
                        alert("保存失败");
                    }
                });
阅读 3.2k
4 个回答

谢谢大家的献策,我已经解决了。
问题在于XMl里有url,所以需要把request给加密下,encodeURIComponent(obj.request),然后传到后台后再解密:HttpUtility.UrlDecode(),这样就解决了。

jQuery的ajax的dataType指的是返回的数据类型,不是请求的数据类型。

如果你要传送XML类型,需要设置contentType并且你要自己构建出xml数据,api不会自动帮你生成xml的

不知你说的是不是这个

ajax首先指定datatype类型 为xml,动态生成的XML一定要将其设置为text/xml,否则默认就是text/html也就是普通的文本了。然后根据根节点获得子节点数据
仅供参考http://www.cnblogs.com/mslove...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进