[英]Joomla 3.3 AJAX call
以下代碼在我的view / tmpl / edit.php中 :
<script type="text/javascript">
jQuery("#button").click(function(){
jQuery.ajax({
url:'somefile.php',
type:'POST',
data: {action:"1"},
success: function(response) {alert(response);}
});
});
</script>
在同一個文件夾中,我具有帶有以下代碼的somefile.php :
if (isset($_POST['action'])) {
SomeFunction();
}
function SomeFunction()
{
...do something
}
我的問題是,當我按下按鈕時,盡管腳本已執行(已檢查警報),但它從未訪問somefile.php 。 我在這里做錯了什么?
請通過一些相關的示例/示例代碼向我顯示一些指導。
謝謝。
如果您要調用“ somefile.php”作為您的URL,該URL等於您在Joomla中瀏覽的當前URL +文件名。 它不會映射到文件的路徑。
例如,如果您位於網站的首頁上,即http://example.com
則AJAX請求將轉到
http://example.com/somefile.php
而在http://example.com/blog/mypost01
頁面上,它將映射到http://example.com/blog/somefile.php
。
這兩個都是錯誤的,因為您的文件實際上是這樣的:
http://example.com/components/com_mycomponent/view/tmpl/somefile.php
首先,我將使用像Charles這樣的代理來監視完整的request
和response
,此周期應該使您清楚了解正在發生的事情以及整個請求/重定向/響應周期。
確保您已將Error Reporting
一直轉到Development
和Joomla DEBUG模式,這樣您可能會看到錯誤而不是返回200
結果。
一些Joomla 3 htaccess
配置和安全擴展(AdminTools)將阻止直接訪問php
文件。 如果這是問題所在,則可能表明您使用的是不安全/不正確的方式。
由於您使用的是Joomla 3.3,請在Joomla Doc的網站上通過Joomla Ajax接口閱讀有關我們的信息 。
最后,當您似乎正在構建自己的組件時,您可能/應該通過您的組件並將AJAX調用傳遞給合適的控制器中的方法,而不是直接訪問PHP文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.