我有一个select元素在更改事件上使用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);
});
});
});
这样做的正确方法是什么?
答案 0 :(得分:2)
$。交('芯/部件/ evoprograms /片段/注册-camp.php
这不好 - 您不希望任何人访问/ core / *
下的任何内容基本上有两种方式:
最简单的方法 - 创建一个资源(没有任何模板),只将您的代码段调用作为内容(未缓存!)。那么你。$ .post到那个资源。
革命方式(更干净,更好) - 使用您自己的连接器(/assets/components/evoprograms/connector.php)。 see this了解更多信息。或者只是复制任何现有的连接器并根据需要进行修改。
答案 1 :(得分: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。
答案 2 :(得分:0)
将modx对象加载到core / components / evoprograms / snippets / register-camp.php脚本中,
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'];