2011-08-14 34 views
2

我有一個選擇元素,它在change事件中使用jQuery進行了一個帖子,我試圖將它發佈到一個代碼片段並獲取結果,但是看起來如果代碼片段被調用直接從JavaScript不會有任何的($modx)對象的概念和使用PDO我不能訪問數據庫,我的代碼如下:來自Jquery/Ajax的調用片段MODx

$(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

如果您告訴我們出了什麼問題,也許張貼一些相關的HTML和PHP的,想出一個解決方案會更容易。 :) – 2011-08-15 08:00:12

+0

問題是簡單地從modx前端執行AJAX調用,並且在後端調用和調用問題是我無法直接從前端調用片段 –

回答

2

.post的$('核心/組件/ evoprograms /段/寄存器camp.php

這是不好的 - 你不想讓任何人在/核心/ *

訪問什麼

基本上有兩種方式:

  1. 最簡單的方法 - 在它只是你的片段作爲來電內容(非高速緩存!),那麼你.post的$臨屋區創建資源(沒有任何模板)。 t資源。

  2. 革命的方式(更清潔,更好) - 使用您自己的連接器(/assets/components/evoprograms/connector.php)。 see this欲瞭解更多信息。或者只需複製現有的連接器並根據需要進行修改。

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。

+1

實際上this.form.submit( )'是JavaScript; ^) –

0

裝入鏌鋣對象在你的核心/組件/ evoprograms /段/寄存器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'];