zoukankan      html  css  js  c++  java
  • AJAX提交数据的三种方式,80%人都没用过第三种

    AJAX提交数据的三种方式,80%人都没用过第三种

    参考资料

    HTTP:https://zh.wikipedia.org/wiki/HTTP

    MIME:https://zh.wikipedia.org/wiki/MIME

    国内博文:http://blog.csdn.net/gueter/article/details/1524447

    第一种方式

    示例代码

    复制代码
     1 var data = {
     2     name: '段光伟',
     3     email: 'shijiucha@qq.com'
     4 };
     5 
     6 Ext.Ajax.request({
     7     url: '../handlers/GetData.ashx',
     8     method: 'GET',
     9     params: { users: Ext.encode(data) }
    10 });
    复制代码

     执行结果

    服务器端代码

    1 context.Response.Write(context.Request.QueryString["users"]);

    第二种方式

    示例代码

    复制代码
     1 var data = {
     2     name: '段光伟',
     3     email: 'shijiucha@qq.com'
     4 };
     5 
     6 Ext.Ajax.request({
     7     url: '../handlers/GetData.ashx',
     8     method: 'POST',
     9     params: { users: Ext.encode(data) }
    10 });
    复制代码

    执行结果

    服务器端代码

    1 context.Response.Write(context.Request.Form["users"]);

    第三种方式

    示例代码

    复制代码
     1 var data = {
     2     name: '段光伟',
     3     email: 'shijiucha@qq.com'
     4 };
     5 
     6 Ext.Ajax.request({
     7     url: '../handlers/GetData.ashx',
     8     method: 'POST',
     9     jsonData: data
    10 });
    复制代码

     执行结果

    服务器端代码

    1 StreamReader sr = new StreamReader(context.Request.InputStream);
    2 context.Response.Write(sr.ReadToEnd());

    ExtJs中Proxy的配置

    配置为第一种方式的代码

    复制代码
     1 Ext.define('Demo.model.User', {
     2     extend: 'Ext.data.Model',
     3     fields: [
     4         { name: 'name' },
     5         { name: 'email' }
     6     ],
     7     proxy: {
     8         type: 'ajax',
     9         api: {
    10             create: '../handlers/GetData.ashx'
    11         },
    12         actionMethods: {
    13             create : 'GET',
    14             read   : 'GET',
    15             update : 'GET',
    16             destroy: 'GET'
    17         },
    18         reader: {
    19             type: 'json',
    20             root: 'users'
    21         },
    22         writer: {
    23             type: 'json',
    24             encode: true,
    25             root: 'users'
    26         }
    27     }
    28 });
    复制代码

    配置为第二种方式的代码

    复制代码
     1 Ext.define('Demo.model.User', {
     2     extend: 'Ext.data.Model',
     3     fields: [
     4         { name: 'name' },
     5         { name: 'email' }
     6     ],
     7     proxy: {
     8         type: 'ajax',
     9         api: {
    10             create: '../handlers/GetData.ashx'
    11         },
    12         reader: {
    13             type: 'json',
    14             root: 'users'
    15         },
    16         writer: {
    17             type: 'json',
    18             encode: true,
    19             root: 'users'
    20         }
    21     }
    22 });
    复制代码

    配置为第三种方式的代码

    复制代码
     1 Ext.define('Demo.model.User', {
     2     extend: 'Ext.data.Model',
     3     fields: [
     4         { name: 'name' },
     5         { name: 'email' }
     6     ],
     7     proxy: {
     8         type: 'ajax',
     9         api: {
    10             create: '../handlers/GetData.ashx'
    11         },
    12         reader: {
    13             type: 'json',
    14             root: 'users'
    15         }
    16     }
    17 });
    复制代码

    备注

    这里没有总结着三种方式的使用场景,请大家给我个建议吧。我大概的想法是这样的。

    • 获取数据:如果参数少用第一种,否则就用第二种。多少看浏览器的限制。
    • 发送数据:如果数据少就用第二种,否则就用第三种。多少看浏览器的限制。
  • 相关阅读:
    POJ 2991(线段树)
    UVa_1592
    紫书 -- 大整数类
    在结构体中添加成员函数/C++
    双向队列
    用埃氏筛法生成质数表
    poj 3687(拓扑排序)
    它们其实都是“图”-- 最小生成树
    最小生成树(MST, Minimum Spanning Tree)
    他们其实都是“图”--最短路
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3049635.html
Copyright © 2011-2022 走看看