2014-06-15 21 views
2

我想調用每個AJAX請求只有一個函數,但不知何故從他的PHP文件中的所有功能都被稱爲。如何使用ajax從一組函數中調用單個函數?

ajax.php

require_once "../lib/common-functions.php"; // here are the functions located. 
subscribe(); 
subscribed(); 
unsubscribe(); 
delete_history(); 
deactivate_account(); 

和AJAX腳本:

$('#delete-history').on('submit', function (e) { 
    $.ajax({ 
     type: 'post', 
     url: '../lib/ajax.html', 
     data: { 
      action: 'delete_history' 
     }, 
     success: function (data) { 
      $("#message").html(data); 
     } 
    }); 
    e.preventDefault(); 
}); 

如果我想只有功能delete_history()然後我得到的消息從其他功能,如subscribe()或全部在其他功能調用一旦。爲什麼?我在哪裏弄錯了。我可以在不將每個函數放入文件的情況下執行此操作。

+0

使用'包括()',而不是'require_once()' –

+0

@ Mr.coder,不,不工作。同樣的事情,從所有的PHP函數獲取消息。 – Adrian

回答

3

您正在發佈到index.html,所以我猜不僅預期的功能沒有被調用,但沒有。

您應該調用適當的.php文件,其中聲明或至少包括函數。

funcName()語法調用函數,所以如果你有申報後這些行:

subscribe(); 
subscribed(); 
unsubscribe(); 
delete_history(); 
deactivate_account(); 

你會打電話給他們。你需要一個依賴於用戶發佈內容的條件。例如: -

if (isset($_POST['action']) && $_POST['action'] == 'subscribe') { 
    subscribe(); 
} 

在你的情況,你發送$_POST['action'] = 'delete_history',但你不能指望它神奇地映射後PARAM與相關功能。我很驚訝你有這樣的期望。誰告訴你發送動作參數會被後端神奇地理解? 你應該按照上面的模式。

if (isset($_POST['action']) && $_POST['action'] == 'delete_history') { 
    delete_history(); 
} 
+0

是的,它現在有效,謝謝。 – Adrian

1
$('#delete-history').on('submit', function (e) { 
    $.ajax({ 
     type: 'post', 
     url: '../lib/ajax.html', 
     data: { 
      action: 'function=delete' 
     }, 
     success: function (data) { 
      $("#message").html(data); 
     } 
    }); 
    e.preventDefault(); 
}); 

PHP裏面包含了所有的功能

if($_POST['function'] == 'delete') 
{ 
    delete_history(); 

} 
相關問題