1

現在、アプリケーションの複数のコントローラーで ajax を使用しています。jQuery 対応バージョンを使用して ajax 機能を実装しました。

$.ajax({
    url:'getCountries',
    type: "POST",
    dataType: "html",
    data:"data=" + result,
    success: function(data){
                    //magic...
        }
    }
});

上記のコードからわかるように、このリクエストの URL は「getCountries」です。これは、リクエストが

http://localhost/appname/controllername/methodname

リクエストURLは

http://localhost/appname/controllername/getCountries

ただし、このスクリプトを使用している URL が上記の例と異なる場合は、

http://localhost/appname/controllername/methodname/7

(編集ビューのように)、これらの URL からの ajax 呼び出しのリクエスト URL は次のように変更されます。

http://localhost/appname/controllername/methodname/getCountries

現在使用しているコントローラーに応じてリクエスト URL が自動的に生成されるようにするにはどうすればよいですか?

URL パスのappnameは、アプリケーションのルート フォルダーの名前であり、ファイルが別のサーバー/場所に転送される場合に、javascript リンクがルート フォルダーとの一貫性を維持できるように、これも含める必要があることに注意してください。.

4

3 に答える 3

1

これを試してみてください

 $.ajax({
url:"<?php echo $this->webroot . $this->params["controller"]; ?>/yourAction"
});

$this->webrootlocalhost/test/ $this->webrootたとえば、アプリ フォルダーが htdocs/test にあり、次の文字列 を使用してアクセスする場合は、webroot へのパスを含めます。'/test/'

于 2013-03-21T13:24:36.457 に答える
0

Ajax 呼び出しでフル パスを使用する必要があると思います。このコードを複数のビューで使用する場合は、いくつかの変数で ControllerName を渡すことができます。

$.ajax({
       url: http://localhost/appname/<?php echo $controllerName; ?>/getCountries
       // code
});

この場合、変数を JavaScript コードにエコーするために、View または Element ファイル (拡張子は *.ctp) を使用する必要があります。または、ビュー内の JavaScript 変数にエコーして、外部の *.js スクリプト ファイルに渡すこともできます。

同様のケースで私にとってはうまくいきます。

于 2013-03-21T09:39:31.730 に答える
0

使用する

echo Router::url(array('controller' => 'controllername', 'action' => 'methodname',7));

出力します。

/controllername/methodname/7

jsで

$.post({url : "<?php echo Router::url(array('controller' => 'controllername', 'action' => 'methodname',7)); ?>"})
于 2016-07-23T08:32:39.750 に答える