2012-11-15 24 views
0

我對joomla開發相當陌生,我正在關注如何在我新創建的模塊中使用AJAX功能的教程。不能在我的joomla模塊中有AJAX工作

基本上,我TMPL /如default.php我:

<script> 
function runButton() { 
    alert("clicked"); 
    var url='http://127.0.0.1:4444/getData'; 
    var request = new Request({ 
        url: url, 
        method:'get', 
        onSuccess: function(responseText){ 
        document.getElementById('fields-container').innerHTML= responseText; 
        } 
       }).send(); 
</script> 
<?php 
    defined('_JEXEC') or die('Restricted access'); 
?> 
<input type="button" value="Click Here for Ajax Call" onClick="runButton()",1000);"/> 
    <div id="fields-container"> 
</div> 

當我按一下按鈕,在「運行」方法被調用,但我有在Chrome中調試以下錯誤:

OPTIONS http://127.0.0.1:4444/getData Resource failed to load 

偵聽端口4444的進程是一個代理,它將啓用來自我的模塊的跨域ajax調用。如果我指定'http:// localhost:4444/getData'

有任何想法嗎?

UPDATE

這似乎被鏈接到theb事實上交叉端口的HTTP查詢未啓用(即使在同一主機上)。任何解決方法?

回答

0

您正在使用defined('_JEXEC') or die('Restricted access');,通常會限制ajax。

如果你還沒有,你需要使用define('_JEXEC', 1);

請注意,您需要使用定義,不定義

還請確保該代碼是第一位的,前ajax腳本。

+0

我改變了我的代碼,所以它使用define('_JEXEC',1),但這仍然是一回事。 – Luc

+0

define('_JEXEC',1)對模塊中的安全性不利。它允許人們使用這個文件作爲joomla的替代入口點。對於ajax,你應該在你的helper.php文件中引用一個函數! –

+1

您將使用哪個URL直接引用模塊的helper.php中的函數?我是否需要爲這個模塊創建一個控制器? – Luc