2

変更イベントでjQueryを使用して投稿するselect要素があります。それをスニペットに投稿して結果を返そうとしましたが、スニペットがJavaScriptから直接呼び出された場合、 ( $modx) オブジェクトがあり、PDO を使用して DB にアクセスできません。私のコードは次のとおりです。

$(document).ready(function() {

    $('#camplist').change(function() {

        $.post('core/components/evoprograms/snippets/register-camp.php?action=getCamp&id=' + $(this).val(), function(data) {
            $("camp-details").show();
            $('.result').html(data);
        });

    });

});

それを行うための正しいアプローチは何ですか?

4

3 に答える 3

2

$ .post('core / components / evoprograms / snippets / register-camp.php

これは良くありません-/core/*の下にあるものに誰もアクセスしたくないでしょう

基本的に2つの方法があります:

  1. 最も簡単な方法-スニペット呼び出しのみをコンテンツとして(キャッシュされていない!)リソースを作成します(テンプレートなし)。次に、そのリソースに$.postしますか。

  2. 革命的な方法(よりクリーンでより良い)-独自のコネクタ(/assets/components/evoprograms/connector.php)を使用します。 詳細については、こちらをご覧ください。または、既存のコネクタをコピーして、必要に応じて変更します。

于 2011-08-18T13:11:27.257 に答える
0

他の方法で行うこともできます-onchangeイベントでフォームを送信し、action必要なスニペットを呼び出すフォームを提供できます...

たとえば、以下のコードを参照してください:-

<form action="[[!snippetname]]" method="POST">
  <h3>dropdown: 
    <select name="selection" onchange="this.form.submit();">
      <option>select</option>
      <option value="2">all</option>
     </select>
   </h3>
 </form>

そして、これにはJavaScriptは必要ありません。

于 2012-01-11T19:42:01.037 に答える
0

core/components/evoprograms/snippets/register-camp.php スクリプトで modx オブジェクトを読み込みます。

define('MODX_API_MODE', true); 
// Full path to the index
require_once('/path/to/modx/public_html/index.php');
$modx = new modX();
$modx->initialize('mgr');
//your post
$your post here = $_POST['register'];
于 2015-02-07T00:31:46.480 に答える