默认情况下,JQueryUI的自动完成功能会将空格编码为“+”。我的远程源要求编码为“%20”。是否可以改变空格的编码方式?
答案 0 :(得分:1)
这个想法是:
$.ajax()
processData: false
<input id="test">
$('#test').autocomplete
({
source: autocompleteRequest
});
function autocompleteRequest(request, response)
{
var inputString = request.term;
var preparedString = inputString.replace(/\s/g, "%20");
$.ajax({
url: "test/",
data: "str=" + preparedString,
processData: false
}).success(function(data)
{
response(data);
});
}
答案 1 :(得分:0)
请在发出服务器请求之前尝试使用 encodeURIComponent(sample),
参考:http://nebsolutions.blogspot.in/2012/03/jquery-autocomplete-encoding-issue.html
答案 2 :(得分:0)
我无法复制您的问题,但正如ManoNamo所说,您的问题可能就是您将数据发送到服务器的方式。 encodeURI和encodeURIComponent都适合您的目的。请参阅下面的工作示例:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Autocomplete - Default functionality</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.1/jquery-ui.js"></script>
<link rel="stylesheet" href="http://jqueryui.com/jquery-wp-content/themes/jqueryui.com/style.css">
<script>
$(function() {
var availableTags = [
"ActionScript KABAM",
"ActionScript",
];
$( "#tags" ).autocomplete({
source: availableTags,
change: function(event, ui) {
console.dir(encodeURIComponent(ui.item.value));
console.dir(encodeURI($("input#tags").val()));
}
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
</body>
</html>