2

我有一个选择元素,它在更改事件上使用 jQuery 进行发布,我试图将其发布到片段并返回结果,但是似乎如果直接从 javascript 调用片段,则不会有( $modx) 对象,我无法使用 PDO 访问数据库,我的代码如下:

$(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/* 下的任何内容

基本上有两种方式:

  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 回答