因为new FormData需要的是一个HtmlElement类型的数据,而jquery拿到的是HtmlElement集合,所以哪怕只有一个元素,也要用[0]取其第一个元素。
jQuery是一个伪数组对象,本身是对象,能表现出来数组的特点: 有length属性,能够用下标取值;
$(".someClass") // 这个时候将所有匹配到DOM元素对象放在jQuery维护的数组中;
$("#id") // 这个时候将所有匹配到DOM元素对象放在jQuery维护的数组中;
用来添加数据,可以是字符串、Blod文件流、File文件流
formData.append('a', 1)
意为添加一个键值对,重复添加的键不会被覆盖
formData.set('a', 1)
意为修改某个键的值,如果不存在则作用等同于append,但是重复添加的值会相互覆盖
var formData = new FormData() ;
formData.append('a', 1);
formData.append('a', 2);
formData.set('b', 3) ;
formData.set('b', 4);
jQuery还可以调用next()
, last()
等方法(返回结果也还是jQuery对象,jQuery链式功能);
举例
$(function(){
$("#add_address_btn").on("click",function(){
var address = document.getElementsByClassName("cndzk-entrance-division-header-click-input-name");
var detail = document.getElementsByClassName("cndzk-entrance-associate-area-textarea").innerHTML;
var addressLink = "";
for(var i=0;i<address.length;i++){
addressDetail+=address[i].innerHTML;
}
var formData = new FormData($("myForm")[0]);
addressDetail+=detail;
formData.append("addressDetail",addressLink);
console.log(addressDetail);
return false;
$.ajax({
url : "/cgi/home/UserHome?function=AddDeliveryAddress",
type : "post",
dataType : "json",
data : formData,
success:function(data){
},error:function(jqXHR, textStatus, errorThrown){
//jqXHR对象的信息
console.log('jqXHR.responseText --> ',jqXHR.responseText);
console.log('jqXHR.status --> ',jqXHR.status);
console.log('jqXHR.readyState --> ',jqXHR.readyState);
console.log('jqXHR.statusText --> ',jqXHR.statusText);
//其他两个参数的信息
console.log('textStatus --> ',textStatus);
console.log('errorThrown --> ',errorThrown);
}
});
});
});