react-natvie fetch提交一直没问题,突然中文参数超过1个汉子就直接走catch报错

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,这是判断超时的,这个项目运行几个月都没问题,今天客户要改一个小地方,我测试时发现只要字符串参数,比如 name、 remark 等超过1个汉子fetch 就不成功 ,直接走catch里,后来装在手机上测试也是这样 ,有没有人碰到同样的问题

阅读 3.8k
2 个回答

后来发觉是老板写的后台有问题,他改了一下就没事了。。。

中文的用encodeURIComponent(name)试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题