鍍金池/ 問(wèn)答/HTML5  Linux  HTML/ react-natvie fetch提交一直沒(méi)問(wèn)題,突然中文參數(shù)超過(guò)1個(gè)漢子就直

react-natvie fetch提交一直沒(méi)問(wèn)題,突然中文參數(shù)超過(guò)1個(gè)漢子就直接走catch報(bào)錯(cuò)

fetchSubmitPromise() {

return new Promise((resolve, reject) => {
  var from = this.props.data.navigation.state.params.from;
  var api='/api/bex/product/update/';
  var url = global.Prefix.concat(api, this.state.productId);
  let formData = new FormData();
  formData.append('tokenId',global.tokenId);
  formData.append('name', this.state.name);
  formData.append('modelId',this.state.modelId);
  formData.append('qualityId', this.state.qualityId);
  formData.append('sizeId',this.state.sizeId);
  formData.append('length',this.state.length);
  formData.append('width',this.state.width);
  formData.append('height',this.state.height);
  formData.append('leatherTypeId',this.state.leatherTypeId);
  formData.append('leatherRemark',this.state.leatherRemark);
  formData.append('colorId',this.state.colorId);
  formData.append('colorRemark',this.state.colorRemark);
  formData.append('accessoryColorId',this.state.accessoryColorId);
  formData.append('accessoryRemark',this.state.accessoryRemark);
  formData.append('accessoryIds',this.state.accessoryIds);
  formData.append('yearOfPurchase',this.state.yearOfPurchase == '未知' ? -1 : this.state.yearOfPurchase);
  formData.append('remark',this.state.remark);
  formData.append('serialNumber',this.state.serialNumber);
  if(this.state.status != 'PURCHASE'){
    formData.append('warehouseId',this.state.warehouseId);
  }

console.log(formData);

  fetch(url,{
     method:'POST',
     headers:{
         'Content-Type':'multipart/form-data',
     },
     body:formData,
   })
   .then((response) => response.json())
   .then((responseJson)=>{console.log(responseJson);
     if(responseJson.code && responseJson.code == 'success'){console.log(responseJson);
       resolve(responseJson.code);
       setTimeout(() => {
         const {goBack, state} = this.props.data.navigation;
         state.params.callback();
         goBack();
         this.setState({disabled: false});
       }, 800);
     }
     if(responseJson.errorCode) {
       reject(responseJson.errorMessage)
     }
   })
   .catch((error)=>{console.log(error);reject(checkApi)});
})

}

這是提交的代碼,不要管Promise,這是判斷超時(shí)的,這個(gè)項(xiàng)目運(yùn)行幾個(gè)月都沒(méi)問(wèn)題,今天客戶要改一個(gè)小地方,我測(cè)試時(shí)發(fā)現(xiàn)只要字符串參數(shù),比如 name、 remark 等超過(guò)1個(gè)漢子fetch 就不成功 ,直接走catch里,后來(lái)裝在手機(jī)上測(cè)試也是這樣 ,有沒(méi)有人碰到同樣的問(wèn)題

回答
編輯回答
假灑脫

中文的用encodeURIComponent(name)試試

2017年4月19日 20:33
編輯回答
骨殘心

后來(lái)發(fā)覺(jué)是老板寫(xiě)的后臺(tái)有問(wèn)題,他改了一下就沒(méi)事了。。。

2017年10月8日 14:59