Ответ 1
Вы можете использовать функцию javascript encodeURI()
для кодирования URL-адреса в "формат Firefox", как вы заявляете.
Я использую метод jQuery $.ajax для отправки и получения данных в службу REST. Некоторые из URL, которые я предоставляю методу $.ajax, требуют кодирования пробелов и других специальных символов.
Проблема заключается в браузерах Chrome, Safari (Webkit) и Internet Explorer. Firefox POST на URL, который закодирован, но другие браузеры POST на URL, который не закодирован.
В качестве примера:
$.ajax ({
url: "http://localhost:8080/rest/123/Product Line A/[Product Type B]",
type: "POST",
dataType: "json",
data: { ... },
success: function(...){},
error: function(...){}
})
Firefox ОТПРАВЛЯЕТ URL в следующем формате:
http://localhost:8080/rest/123/Product%20Line%20A/%5BProduct%20Type%20B%5D
Chrome, Safari и IE POSTS URL-адрес в следующем формате:
http://localhost:8080/rest/123/Product Line A/[Product Type B]
Службы REST принимают кодированный (Firefox) формат - есть ли способ сделать это согласованным во всех браузерах?
Спасибо заранее!
Вы можете использовать функцию javascript encodeURI()
для кодирования URL-адреса в "формат Firefox", как вы заявляете.
Передача [Product Type B]
в незарегистрированной форме недействительна, поэтому то, что делают браузеры, это undefined.
Сделайте encodeURIComponent()
часть части продукта.
Я думаю, что .serialize() будет способом jquery для этого.
здесь: http://api.jquery.com/serialize/
также есть плагин для jquery: http://plugins.jquery.com/project/URLEncode
или способ javascript... encodeURIComponent()
Быстрое исправление будет перед encodeURI()
URL-адресом перед передачей в $.ajax. Вы также можете заменить функцию $.ajax тонкой оболочкой, чтобы взять {} литерал и закодировать URL-адрес перед передачей исходной функции.