• $.ajax Post 数据指定类型为application/json 的时候,后台无法直接request到数据


    在$.ajax代码的时候,两端差不多的代码,一段可以提交,另一段在后台怎么样也无法request到ajax post的数据:

     $.ajax({
                        type: "POST",
                        url: window.prefixURL + '/CalendarHandler/InsertCalendarEventData2',
                        contentType: 'application/json;charset=utf-8',
                        data: { "data": myjson.stringify(data) },
                        dataType: 'json',
                        success: function (doc) {

    仔细对比了两段代码,发现无法Request的方法,前段ajax代码里多了这么一句话:contentType:'appcalition/json;charset=utf-8'

    用HttpWachter查看到,提交的时候Content-Type也是不一样的,ajax里面不指定contentType的截图如下:

    而加了contentType的截图如下:

    在网络上搜索了一下:

    multipart/form-data和application/x-www-form-urlencoded的区别

        FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”。然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。

        在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。

         Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。

          当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1& amp; amp;name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。

          当action为post时候,浏览器把form数据封装到http body中,然后发送到server

    Post提交的数据:

      结论:Post提交的数据,类型不可以为application/json.....个人推测Post是以流的方式提交,而Request["keyWorkd"]方式根本无法获取到Stream上来的数据。

    后台可以直接通过代码获取到post上来的stream(流)

     StreamReader stream=request.getInputStream();
  • 相关阅读:
    用.NET Compact Framework创建图像按钮
    .netCF中后台多线程与UI界面交互的冻结问题
    参考网站
    PPC全屏(C#)(转)
    推荐一个.net cf的开源网站
    在Windows Mobile中应用智能设备框架(Smart Device Framework)
    使用飞信框架(Remotesoft DOTNET Linker)使.net程序脱离.net框架运行
    .NET CF 能不能快一点?
    jquery中文指导:15天学会jquery]]
    .NET CF开发的源代码级优化器(C#)(Alpha)
  • 原文地址:https://www.cnblogs.com/wanglee/p/2862269.html
Copyright © 2020-2023  润新知