2014-09-26 51 views
1

默认情况下,JQueryUI的自动完成将空格编码为“+”。我的远程源期望编码为“%20”。是否有可能改变空间编码的方式?可能更改JQueryUI自动完成的空间编码?

+0

一个可以玩的例子会很棒。你可以在http://jsfiddle.net发布一个例子 – 2014-09-29 17:54:20

+0

@Vega:默认情况下,并不确定它需要一个,因为JQuery-UI的自动完成将空格编码为'+'。 – 2014-09-29 18:28:02

+2

如果您使用'source:“http://example.com/”',尝试使用'source:function(request,successCallback){$ .ajax(...)。done( successCallback); }'。 – Regent 2014-09-30 10:36:14

回答

1

的理念是:

  • 使自动完成请求到服务器使用手动$.ajax()
  • 手工编写通过替换发送的数据“”与“%20”
  • 以防止发送的数据的默认处理使用processData: false

Example fiddle

<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

我无法复制你的问题,但作为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