默认情况下,JQueryUI的自动完成将空格编码为“+”。我的远程源期望编码为“%20”。是否有可能改变空间编码的方式?可能更改JQueryUI自动完成的空间编码?
1
A
回答
1
的理念是:
- 使自动完成请求到服务器使用手动
$.ajax()
- 手工编写通过替换发送的数据“”与“%20”
- 以防止发送的数据的默认处理使用
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);
});
}
0
请尝试使用encodeURIComponent方法(样品)使一台服务器请求之前,
参见:http://nebsolutions.blogspot.in/2012/03/jquery-autocomplete-encoding-issue.html
+1
结果是双重编码的东西&“迈克尔情人节”最终成为“迈克尔%2520Valentine” – 2014-10-03 21:47:46
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>
+0
这最终将双重编码的事物和“迈克尔瓦伦丁”结束为“迈克尔%2520Valentine” – 2014-10-03 21:48:12
一个可以玩的例子会很棒。你可以在http://jsfiddle.net发布一个例子 – 2014-09-29 17:54:20
@Vega:默认情况下,并不确定它需要一个,因为JQuery-UI的自动完成将空格编码为'+'。 – 2014-09-29 18:28:02
如果您使用'source:“http://example.com/”',尝试使用'source:function(request,successCallback){$ .ajax(...)。done( successCallback); }'。 – Regent 2014-09-30 10:36:14