所以我能够解决这个问题。问题是自动完成需要指定的响应。ajaxCall 没有真正的成功回调,因此无法使用返回的数据设置响应。我决定绕道而行,手动设置所有内容。这就是我想出的。
include\component\controller\mycontroller.class.php
$this->template()->assign(array('token' => Phpfox::getService('log.session')->getToken());
template\default\somehtml.html.php
<input id="security_token" type="hidden" name="phpfox[security_token]" value="{$token}" />
static\jscript\myjavascript.js
$("#searchPlaces" ).autocomplete({
source:function( request, response ) {
$.ajax({
url: "/static/ajax.php",
minLength: 1,
dataType: "json",
data: {
startsWith: request.term,
'core[security_token]': $("#security_token").val(),
'core[ajax]': true,
'core[call]': 'mymodule.myfunction'
},
success: function( data ) {
response( data );
}
});
},
autoFocus: true
});
include\component\ajax\ajax.class.php
public function myfunction(){
$yourdata = array("1" ,"2", "3", "4");
$this->call(json_encode($yourdata ));
}
基本上,安全令牌是通过隐藏元素设置的。该 url 将始终是url: "/static/ajax.php",
,因为这将负责为您调用 ajax 文件。'core[call]': 'mymodule.myfunction'
这设置为您将如何使用$.ajaxCall('mymodule.myfunction')
. 您需要做的就是找到您现在想要正常返回的自动完成项目。
希望这有助于以防其他人遇到同样的情况。