templates/active_tmpl/html/com_virtuemart/orders/details_history.phpの#__ virtuemart_order_historiesからjQuery.ajaxを介してデータを取得する必要があります。コントローラーで新しい&task =を使用してそれを実行できることを知っていますが、Virtuemartコアファイルに触れずに上記のファイルのDBにajaxクエリを実行することは可能ですか?
私は次の簡単な解決策を見つけました:.../orders/details_history.phpスクリプトを追加するには:
var response = jQuery.ajax({
type: "GET",
url: "index.php?tmpl=raw&order_id=<?php echo $this->orderdetails['details']['BT']->virtuemart_order_id; ?>",
async: false
}).responseText;
alert(response);
そして、アクティブなテンプレートのフォルダーにファイルraw.phpを作成し、DBへのクエリを実行します。
$order_id = $_REQUEST['order_id'];
$db = &JFactory::getDBO();
$query = $db->getQuery(true);
...
他のより良い解決策は高く評価されます
また、「ajax」という名前のビューを作成することもできます。必要なのは、ビューディレクトリに「ajax」ディレクトリを作成することだけです。このディレクトリ内に、表示クラスを含むview.html.phpを配置します。
public function display($tpl = null) {
//Get post data
$input = JFactory::getApplication()->input;
//do whatever you want to to
echo json_encode($returnData);
exit;
}
}
出口を設定することが重要です。コマンド。リクエスト内でテンプレートhtmlが取得されるのを防ぎます。
JQueryスクリプト内で、次のような投稿データを使用してこのビューを呼び出します。
var post_vars = new Array();
post_vars.Push({name:'somevar', value:'somevalue'});
var data = jQuery.post('index.php?option=com_mycomponent&view=ajax', post_vars);
data.done(function(reply_data) {
var response_json = jQuery.parseJSON(reply_data);
//do whatever you want
});
私見、この状況の最も明確な解決策は:
クエリに_&format=json
_を追加し、それを任意のビューにポイントする
_var response = jQuery.ajax({
type: "GET",
url: "index.php?option=com_virtuemart&view=order&order_id=<?php echo $this->orderdetails['details']['BT']->virtuemart_order_id; ?>&format=json"
});
_
次に、_view.json.php
_に_components/com_virtuemart/view/order/
_を追加し、display()
関数で必要なことをすべて実行する必要があります。