我的代码段是:
$('#PostCode').autocomplete({
source: function (request, response) {
$.ajax({
url: "${createLink(controller:'postcode',action:'getValidPostcodeValues')}",
dataType: "json",
success: function( data ) {
response( $.map( data, function( item ) {
return {
id: item.id,
value: item.name
}
}));
}
});
},
minLength: 1,
select: function (event, ui) {
$('#PostCodeHidden').val(ui.item.id);
}
});
然而它不起作用。我使用chrome web工具跟踪ajax调用url就像是
GET http://localhost:8080/edp-grails/xxx/xxx/$%7BcreateLink(controller:'postcode',action:'getValidPostcodeValues')%7D 404 (Not Found)
为什么grails无法将createlink解释为实际的url?
答案 0 :(得分:3)
在这种情况下我通常做的是在GSP文件中,执行以下操作:
<script> var getValidPostcodeValuesURL = "${createLink(controller:'postcode',action:'getValidPostcodeValues')}"</script>
然后在JS文件的AJAX调用中执行:
$.ajax({
url: getValidPostcodeValuesURL,
dataType: "json",
success: function( data ) {
response( $.map( data, function( item ) {
return {
id: item.id,
value: item.name
}
}));
}
});
可能有其他更好的方法,但它对我有用