#javascript #java #ajax #string #backslash
#javascript #java #ajax #строка #обратная косая черта
Вопрос:
я пытаюсь вернуть строку из Java в вызов ajax. Строка содержит локальный путь к файлу Excel, который должен быть открыт в браузере: например: «D:docsfile.xls » Проблема в том, что при возврате in возвращается двойная обратная косая черта следующим образом: «D:docsfile.xls » Я пытался использовать регулярные выражения, как в Java, так и в javascript, чтобы исправить это, но путьдвойная обратная косая черта остается неизменной.
Вызов ajax
$.ajax({
url : baseUrl "autotest/process",
type : 'GET',
data : '',
dataType : 'text',
contentType: 'text/plain',
processData: false,
success : function(data) {
//Here data contain a path with double backslash \
//even if i try to strip out the \ as follow:
var str = data.replace(/\/g, "\");
//str still have the double backslash \
Контроллер в Java:
@RequestMapping(value = "app/process", method = RequestMethod.GET)
public @ResponseBody String process(HttpServletRequest request, HttpServletResponse response) {
// code...
// trying to strip all the double backslash
String path = str.replaceAll("\\\\", "\\");
// path still have the double backslash \
return path;
}
Как я могу решить эту проблему?
Большое вам спасибо
Ответ №1:
Если ваша цель — удалить двойные обратные косые \
data
черты, то регулярное выражение, которое вы используете в вызове ajax, неверно.
Это должно быть /\\/g
вместо /\/g
:
var str = data.replace(/\\/g, "\");
Комментарии:
1. Спасибо за ваш ответ. Я попробовал ваше регулярное выражение, и результат тот же. Достаточно интересным является тот факт, что если я помещу оператор console.log(‘received: ‘, data); вывод печатается правильно как полученный: «D:docsfile.xls » и это перед выражением var str = data.replace(/\\/g, «\»);выдается почему?
2. Интересно. Можете ли вы зарегистрировать как str, так и данные после вызова replace ? кроме того, можете ли вы System.out.print str и строку пути до и после вызова replace также в серверной части?