だから私は問題を回避することができました。問題は、指定された応答を必要とするオートコンプリートです。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 ));
}
基本的に、セキュリティトークンは非表示の要素を介して設定されます。これにより、ajaxファイルの呼び出しが自動的に行われるため、 URLは常になりurl: "/static/ajax.php",
ます。'core[call]': 'mymodule.myfunction'
これは、の使用方法に設定されています$.ajaxCall('mymodule.myfunction')
。あなたがする必要があるのは、今通常通りに返したいオートコンプリートアイテムを見つけることです。
うまくいけば、これは他の誰かが同じ状況に陥った場合に役立つでしょう。