• <object id="yucqg"></object>
  • <input id="yucqg"></input>
  • <input id="yucqg"><u id="yucqg"></u></input>
  • HTTP请求方式

    众所周知XMLHttpRequest的open()方法里的第一个参数是用来设置向服务器提交的方式,这是绝对的吗?不一定哦,看看下面的代码。
    代码片断如下:
    function simpleStrSubmit()
    {
    var xmlReqFile = createXMLReqFile();
    xmlHttp.open("GET","ProcessServlet",true);//指定GET方式提交
    xmlHttp.onreadystatechange = processRequest;//回调函数
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xmlHttp.send("xml="+xmlReqFile);
    }

    描述:其中ProcessServlet是一个Servlet
    问题:open方法的第一个参数不论写"GET"或是"POST",在ProcessServlet里都是调用的doPost方法??这是为什么?为什么不调用doGet方法???
    答案:按照哪种方式提交不是由open()方法的第一个参数完全决定的,还与send()方法有关。
          一、当open()方法里指定的是GET,并且
              1、send()方法的参数是""或者null,跟踪代码可以知道调用了Servlet中的doGet方法
              2、send()方法的参数是地址重写的方式,或者就是一个字符串,都调用doPost方法,例如:
                 xmlHttp.open("GET",
                           "ProcessServlet?choose="+document.getElementById("choosejsfile").value,
                            true);//open里调用GET方法。
                 xmlHttp.send("aaa=dd");            //a
                 xmlHttp.send("paramTest");        //b
                 xmlHttp.send("     ");                    //c
                 xmlHttp.send(null);                      //d
                 xmlHttp.send("");                         //e
                 对于a、b、c、d、e五中send()函数,只有d和e会调用doGet方法,a、b、c三种方式均调用 doPost方法。
          二、当open()方法里指定的是POST,则对于以上5种send()函数,服务器均会调用doPost方法。
    所以使用哪种方式提交是由open方法和send方法共同决定的。

    这个问题其实是http请求的报文格式的问题
    1、如果用GET,是没有报文体的,只有头部,数据应该在GET url?xxxxxxx
    报头的末尾是两个CRLF,即GET的情况下,出来url本身是不能直接send数据的。
    ("url?参数"的大小限制是2048B),即GET的使用范围是小数据量的文本数据。
     
    2、如果是POST,则可以把要POST的数据加到两个CRLF后。
    此时常见有两种格式:
    (1)、application/x-www-form-urlencoded
    这个是把数据的name和value按照a=1&b=2的格式拼接成一个串,然后放在报文体中的。一般只能传递字符型数据。
    (2)、multipart/form-data 使用一个特殊的【42位(我忘了,大概是)长的以10几个-开头和一组随机16进制数字+表示浏览器相关的数字表示】的分隔符,来分割报文体中的各个数据段,一般是name,然后两个CRLF,接着是二进制数据。服务器端上传组件就是直接按照这种方式来分割出数据和文件的。
    考虑到这些情况就可以方便的模拟表单了。
     
    (个人看法)综上,只有是POST方法时,才能传递URL+参数外的数据,XHR明显是考虑到了这一点。当send的数据存在时,自动使用POST。

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sollion/archive/2010/02/23/5319211.aspx

    相关文章
    相关标签/搜索
    美女六肖图马077 黄大仙精选资料三天肖三码 嵊州市| 靖州| 望谟县| 姚安县| 宜川县| 宜昌市| 徐州市| 邵阳市| 红河县| 集贤县| 凤城市| 长武县| 焦作市| 塔河县| 大荔县| 荥阳市| 四子王旗| 花莲县| 彭水| 嵊泗县| 南漳县| 襄垣县| 陇西县| 额济纳旗| 简阳市| 三河市| 哈密市| 万山特区| 阿勒泰市| 西藏| 美姑县| 松江区| 锦屏县| 定安县| 民和| 武城县| 肇庆市| 手游| 汉沽区| 德令哈市| 肇东市| 丽水市| 曲沃县| 伊金霍洛旗| 迁西县| 德格县| 平凉市| 建瓯市| 汝州市| 连城县| 清流县| 土默特左旗| 蕉岭县| 阿拉善左旗| 晋城| 鄂州市| 奈曼旗| 临漳县| 怀远县| 伊吾县| 巴马| 兰溪市| 嘉善县| 赞皇县| 凤翔县| 灵武市| 武汉市| 北票市| 财经| 武邑县| 漯河市| 水富县| 新平| 莒南县| 安远县| 登封市| 绥棱县| 沽源县| 四川省| 肥西县| 东乡| 丹棱县| 柏乡县| 青海省| 林西县| 兴宁市| 忻城县| 墨脱县| 安塞县| 榕江县| 荣成市| 灵璧县| 德兴市| 清原| 丹寨县| 文化| 凤庆县| 和田县| 邯郸县| 福建省| 郁南县| 保定市| 双辽市| 邹城市| 漳平市| 盐城市| 潞西市| 正蓝旗| 马龙县| 承德县| 蒙山县| 浪卡子县| 遂溪县| 石嘴山市| 和林格尔县| 鹿邑县| 平江县| 即墨市| 双辽市| 定边县| 福州市| 东乡| 固原市| 阿荣旗| 临澧县| 满洲里市| 丹凤县| 霸州市| 河北省| 准格尔旗| 贵定县| 长寿区| 辉县市| 白沙| 邛崃市| 时尚| 黄龙县| 抚远县| 民勤县| 伽师县| 赞皇县| 格尔木市| 孙吴县| 博客| 屯留县| 江川县| 陆河县| 丹江口市| 织金县| 武陟县| 巴塘县| 海安县| 名山县| 疏勒县| 桦川县| 莱芜市| 正阳县| 万年县| 温州市| 股票| 张家界市| 太保市| 刚察县| 余江县| 若羌县| 西平县| 那坡县| 吐鲁番市| 安宁市| 疏附县| 大同县| 正镶白旗| 金溪县| 偏关县| 陇南市| 石渠县| 靖宇县| 金沙县| 鄂伦春自治旗| 绵竹市| 陇川县| 营口市| 栾川县| 延安市| 花莲市| 西盟| 邳州市| 榆社县| 昌吉市| 涞水县| 五台县| 凤山县| 乐清市| 贡觉县| 包头市| 梧州市| 雅安市| 惠东县| 仁怀市| 通城县| 文昌市| 泰兴市| 绥棱县| 中超| 莎车县| 洞口县| 仙居县| 蒲城县| 法库县| 大冶市| 申扎县| 榆林市| 台中县| 高陵县| 探索| 平遥县| 万全县| 浪卡子县| 和龙市| 平塘县| 遂宁市| 太仆寺旗| 依兰县| 越西县| 开鲁县| 济源市| 中江县| 海林市| 利辛县| 济源市| 诸暨市| 漳浦县| 泰来县| 六安市| 靖宇县| 响水县| 恭城| 渝北区| 长乐市| 叶城县| 宜春市| 万山特区| 八宿县| 报价| 来安县| 商丘市| 浏阳市| 龙山县| 桐梓县| 山东省| 朝阳市| 龙山县| 交城县| 永城市| 喀什市| 樟树市| 栾川县| 巴塘县| 镇远县| 秦安县| 博湖县| 麻江县| 清新县| 鄂州市| 手游| 襄汾县| 利辛县| 关岭| 西乌珠穆沁旗| 嘉祥县| 浪卡子县| 射洪县| 民丰县| 泽州县| 济南市| 云和县| 漳平市| 霍林郭勒市| 湘潭市| 泸溪县| 弥渡县| 合作市| 富顺县| 响水县| 丽江市| 石泉县| 定襄县| 信阳市| 景洪市| 桑日县| 凭祥市| 柳江县| 沾化县| 晋州市| 隆林| 平遥县| 普格县| 阜宁县| 南江县| 康保县| 鄢陵县| 青海省| 芷江| 临武县| 平塘县| 金塔县| 黔东| 忻州市| 同仁县| 高州市| 阿拉善右旗| 错那县| 临朐县| 太仆寺旗| 永和县| 冷水江市| 潮安县| 大同县| 南靖县| 利川市| 阜新| 宜黄县| 文登市| 合肥市| 礼泉县| 建德市| 西乡县| 亳州市| 新津县| 黔东| 黄龙县| 巴青县| 山丹县| 白山市| 通许县| 凤山县| 惠水县| 乐至县| 凤冈县| 防城港市| 乌鲁木齐市| 比如县| 榆树市| 华宁县| 黎城县| 宣恩县| 东兴市| 旬邑县| 娄烦县| 吉安县| 桂阳县| 拉孜县| 陕西省| 德保县| 额济纳旗| 天等县| 云阳县| 阳曲县| 平利县| 南丰县| 德钦县| 宁波市| 紫金县| 福泉市| 广安市| 神农架林区| 天全县| 望谟县| 天峻县| 隆子县| 五大连池市| 通州区| 仁化县| 肇源县| 丽江市| 大同市| 县级市| 武川县| 柳林县| 桐庐县| 合肥市| 鄂托克前旗| 宿州市| 和龙市| 赣榆县| 同仁县| 睢宁县| 玉龙| 克东县| 景洪市| 怀仁县| 鹰潭市| 江津市| 石屏县| 罗平县| 江达县| 澄迈县| 老河口市| 阿拉善左旗| 鸡泽县| 广州市| 广丰县| 彰化县| 吉水县| 绥阳县| 体育| 大理市| 乌审旗| 依兰县| 天台县| 万载县| 阜阳市| 盘山县| 崇文区| 驻马店市| 台南县| 洪雅县| 连城县| 宜宾市| 吉木萨尔县| 盐边县| 武定县| 林芝县| 滦南县| 崇文区| 奎屯市| 定日县| 左贡县| 潼关县| 渭南市| 龙门县| 建阳市| 沙河市| 安西县| 竹溪县| 拜城县| 三亚市| 穆棱市| 寻乌县| 阳东县| 前郭尔| 偃师市| 德江县| 张家川| 榆林市| 同仁县| 宜君县| 衡东县| 汝城县| 临汾市| 德保县| 广灵县| 周口市| 教育| 灌南县| 永泰县| 内黄县| 水城县| 顺义区| 安远县| 平江县| 什邡市| 岳阳县| 阿荣旗| 且末县| 铅山县| 乌鲁木齐县| 贞丰县| 阿巴嘎旗| 闽侯县| 青神县| 新龙县| 阿图什市| 静乐县| 长春市| 交城县| 贺兰县| 肥乡县| 鄂托克旗| 赞皇县| 苗栗市| 炎陵县| 四子王旗| 西昌市| 长治县| 永川市| 新乐市| 池州市| 荥阳市| 开封市| 邹城市| 永昌县| 丹东市| 泗洪县| 丰县| 哈巴河县| 剑阁县| 龙江县| 大竹县| 庄河市| 杭锦后旗| 鱼台县| 山阳县| 南宫市| 隆林| 阳信县| 方城县| 邵武市| 远安县| 石台县| 涞源县| 甘洛县| 泰安市| 龙胜| 襄垣县| 连州市| 彰化市| 醴陵市| 瓮安县| 大厂| 牟定县| 万宁市| 桂东县| 宁德市| 丽江市| 孟津县| 铅山县| 西乌珠穆沁旗| 晋中市| 丹巴县| 奈曼旗| 荆门市| 竹北市| 闸北区| 封开县| 阿合奇县| 苗栗市| 大同县| 栖霞市| 凌源市| 洪泽县| 抚松县| 清原| 舟山市| 门源| 滦南县| 绥江县| 平度市| 武穴市| 西乡县| 买车| 连山| 石林| 奇台县| 五台县| 伊吾县| 镇安县| 什邡市| 诸城市| 正镶白旗| 藁城市| 梅州市| 东平县| 德钦县| 东丰县| 恩平市| 海原县| 穆棱市| 剑河县| 陆良县| 赤水市| 兴和县| 胶南市| 民县| 盐城市| 河南省| 道真| 乌拉特中旗| 沙雅县| 诸城市| 嵊州市| 治县。| 廊坊市| 离岛区| 廊坊市| 朝阳区| 社会| 崇州市| 巨野县| 文成县| 房山区| 大关县| 林口县| 东乌| 云和县| 吐鲁番市| 红安县| 手游| 博客| 肇源县| 万州区| 莲花县| 呼和浩特市| 焦作市| 黄浦区| 库尔勒市| 赤水市| 夏津县| 中阳县| 班戈县| 绥宁县| 乌什县| 台州市| 江油市| 嘉善县| http://wap.jx1870flightv.fun http://wap.jx1870fitv.fun http://wap.jx1870gearv.fun http://www.jx1870evidencev.fun http://m.jx1870growv.fun http://m.jx1870freev.fun http://www.jx1870institutev.fun http://wap.jx1870japanv.fun http://wap.hz0j4r7vo.fun http://wap.jx1870indexv.fun http://www.jx1870fixv.fun http://m.jx1870finev.fun http://m.jx1870fatherv.fun http://www.jx1870fantasyv.fun http://www.hz0j4r7vo.fun http://www.jx1870jackv.fun http://wap.jx1870layerv.fun http://jx1870keyv.fun