2016-09-06 79 views
3

我熟悉如何讓ajax進入一個php頁面執行一系列的事情,然後返回json數據。但是可以調用駐留在給定頁面中的特定函數嗎?如何從ajax調用php函數?

基本上我想要的是減少項目中的文件數量。因此,我可以在一個頁面中添加很多常用功能,然後只需調用我想要的功能即可。

+0

是的,你可以。只需在當前網址中爲ajax請求添加一些標誌即可。像你當前的網址?isAjax = 1,並在腳本中檢查該標誌 –

+0

是的,你可以做到這一點。你必須注意參數,以便函數的調用可以相互區分。在PHP中,你可以使用開關的情況下(並非總是需要)基於這些參數來區分函數 –

+0

mvc模式會有幫助,另一種方法是根據url中傳遞的參數調用函數。iF ELSE子句的參數和調用相應的功能 –

回答

7

對於ajax請求

1.在您的網頁中包含Jquery庫。 爲如:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 

2.Call按鈕功能點擊按鈕

<button type="button" onclick="create()">Click Me</button> 

3.當點擊,調用javascript中創建功能。

<script> 
    function create() { 
      $.ajax({ 
      url:"test.php", //the page containing php script 
      type: "post", //request type, 
      dataType: 'json', 
      data: {registration: "success", name: "xyz", email: "[email protected]"} 
      success:function(result){ 

      console.log(result.abc); 
      } 
     }); 
    } 
<script> 

在服務器端test.php的文件,動作POST參數應當被理解和相應的值,並做在PHP的動作和JSON格式例如返回

$regstration = $_POST['registration']; 
$name= $_POST['name']; 
$email= $_POST['email']; 

if ($registration == "success"){ 
// some action goes here under php 
echo json_encode(array("abc"=>'successfuly registered')); 
} 
+0

的結果謝謝,我更喜歡此解決方案。 –

3

你不能直接從一個AJAX調用調用PHP函數,但是你可以這樣做:

<? php 
    function test($data){ 
     return $data+1; 
    } 

    if (isset($_POST['callFunc1'])) { 
     echo test($_POST['callFunc1']); 
    } 
?> 
<script> 
    $.ajax({ 
     url: 'myFunctions.php', 
     type: 'post', 
     data: { "callFunc1": "1"}, 
     success: function(response) { console.log(response); } 
    }); 
</script> 
+0

夠公平的。感謝那。思考當我完成這個項目時,我可能會使用框架。 –

+0

請小心使用此方法,因爲響應將包含所有內容,而不僅僅是迴應函數 – RamRaider

0

如果我理解正確的話,當然可以。 把所有的功能放在一個php文件中,並將ajax傳遞作爲你想要調用的參數。然後用開關或結構,執行你想要的。