2013-07-18 52 views
-2

使用diiferent php頁面刪除/插入/更新每個模塊,我會使我的PHP頁面太多,每一個Ajax我打電話。像我可以使用一個函數,而不是在調用ajax POST/GET時創建新的php頁面嗎?

$.post("../lib/ajax/edit-user-save.php",{username:username,email:email,id:id},function(data){} 

我使用edit-user-save.php編輯模塊。現在刪除我做像delete-user.php。我不能使用函數調用時發出/獲取ajax請求,而不是重定向到PHP頁面?

您的建議非常感謝。謝謝:d

如果它似乎愚蠢的問題,則M的極端遺憾:3

+2

你問是否可以傳遞另一個參數並在PHP中使用'if'或'switch'? – SLaks

+0

而不是使用url,我的意思是使用一個函數? –

+0

您需要編寫檢查參數的代碼來確定要執行的操作。 – SLaks

回答

2

只需傳遞一個參數來說明您嘗試使用哪個操作,然後在服務器端檢查該參數並調用相應的函數。事情是這樣的:

客戶端:

$.post("../lib/ajax/user.php", { 
    username: username, 
    email: email, 
    id: id, 
    action: 'edit' 
}, function(data){}); 

服務器端:

switch($_POST['action']) { 
    case 'edit': 
     die(edit()); 
    case 'delete': 
     die(delete()); 
} 

或者你可以得到在服務器端看中,做這樣的:

if (function_exists($_REQUEST['action'])) { 
    die($_REQUEST['action']()); 
} 

這將檢查該函數是否存在於服務器端頁面上,如果存在,它會調用它。 警告:這將允許用戶調用該腳本提供的任何PHP功能,因此如果有任何功能他們不應該能夠打電話,您必須將他們可以撥打的電話列入白名單或將其列入黑名單他們不能。

die()調用將在函數調用返回時停止腳本執行,從而阻止腳本繼續並重新生成HTML。

+0

是有道理的。但是當我回調數據時,服務器端頁面中的所有html將被調用?不是嗎? –

+0

@ Wang'lPakhrin:查看更新的答案。只要'死()'以防止進一步的腳本執行。 – Travesty3

+0

@ Travesty3'die()'與'exit;'相同嗎? 「退出」有什麼不同或缺點? –

2

號的HTTP請求只能到URL製造。

如果您想運行一個函數,那麼該URL必須由服務器端程序處理,並且該程序必須調用您想要運行的函數。你可以基於(例如)查詢字符串參數來有條件地做到這一點。

0

您可能有一個變量function,它將發佈執行delete/insert/update所需的函數。在php頁面上,您將需要有if/else條件或case語句。其中你有一段代碼來更新變量函數=='update'時,等等。

相關問題