1

私はこれを私のjavascriptファイルに持っています

$("#searchPlaces" ).autocomplete({
    source:function( request, response ) {
        $.ajaxCall('mymodule.getcities', 'startsWith='+request.term);
    },
    autoFocus: true
});

そして、これは私のajax phpファイルにあります。

public function getcities(){
    $cities = array("1" ,"2", "3", "4");
    $this->call(json_encode($cities));
}

配列をjsonとして返しますが、オートコンプリートフィールドには何も表示されません。

ajaxCall関数を使用してphpfoxでこのタスクを達成する方法を知っている人はいますか?

ありがとう。

4

2 に答える 2

2

だから私は問題を回避することができました。問題は、指定された応答を必要とするオートコンプリートです。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')。あなたがする必要があるのは、今通常通りに返したいオートコンプリートアイテムを見つけることです。

うまくいけば、これは他の誰かが同じ状況に陥った場合に役立つでしょう。

于 2013-01-30T01:57:13.453 に答える