About backbone url requests where parameters with Chinese are stored in the database is a quick solution to scrambling

  • 2021-06-28 10:30:51
  • OfStack

Recently, the project used backbone to do the front-end and back-end separation scheme, encountered the Chinese scrambling problem, the solution is summarized as follows:

Suppose you need to save a course record to the background

model is defined as follows:


var AddCourse= Backbone.Model.extend({
url:path+"/course/add",
parse : function(response){
return response.data;
}
});

The encodeURIComponent function encodes Chinese content


$('#addCourseBtn' ).click(function(){
var courseName = encodeURIComponent($('#myCourseName').val().trim(), 'utf8');
var description = encodeURIComponent( $('#description').val().trim(),'utf8' );
var privilege = encodeURIComponent($('#privilege').val().trim(), 'utf8');
var userId=$.cookie( 'userId');
var course = new AddCourse();
// Transfer data 
course.fetch({data : $.param({ courseName : courseName,description : description,privilege : privilege,userId : userId})});
});

api definition, URLDecoder.decode function decoding


@Controller
@RequestMapping("/course")
public class CourseController {
@Resource
private CourseService courseService;
@RequestMapping("/add")
// Add Code: Code Modification 
@ResponseBody
public Result add(String courseName,String description,String privilege,int userId){
String deCourseName;
String deDescription;
String dePrivilege;
Result result =new Result();
try {
deCourseName = URLDecoder.decode(courseName, "UTF-8");
deDescription = URLDecoder.decode(description, "UTF-8");
dePrivilege = URLDecoder.decode(privilege, "UTF-8");
result=courseService.addCourse(deCourseName, deDescription, dePrivilege, userId);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}

Related articles: