2013-11-01 48 views
0

我想調用一個名爲functions.php的php文件,其中我有多個相關的函數(所有數據庫更改爲賬戶,即添加,編輯,刪除) 。我一直在努力,因爲AJAX調用似乎很好,但從服務器返回的響應是空的(content-lenght:0)。我回到了原點,只是使用AJAX發送數據到一個只包含php代碼來處理這個調用(即沒有函數)的php文件,並且它工作正常。只要我將這個簡單的語句包裝到一個函數中,它就會再次失敗。所以我正在做的事情導致PHP不會發送一個響應時,我把它包裝在一個函數。多個PHP函數在同一個文件中的問題

您是否必須從ajax腳本或表單元素中的某處以某種方式調用特定的PHP函數?如果有多個函數,php文件如何知道您在ajax調用中要求哪個函數?或者只是通過將$ _POST元素與正在發送的數據進行匹配來對其進行排序,而不管$ _POST元素在哪個函數中?

我懷疑我的PHP代碼是難辭其咎:

function delete_account(){ 
require(ROOT_PATH . "/inc/database.php"); 

$deleteAccount = $_POST['accountName']; 

try { 
    $results = $db->prepare("DELETE FROM account WHERE account_id_PK = ?"); 
    $results->bindValue(1, $deleteAccount); 
    $results->execute(); 
} catch(Exception $e) { 
    echo "ERROR: Data could not be removed from the database. " . $e; 
    exit; 
} 
return; 
} 

此外,當我按下提交按鈕,我的Ajax調用被解僱了,它會立即返回在瀏覽器中成功的消息,並作爲我在我的谷歌開發工具窗口中觀看網絡選項卡,成功消息顯示在php文件被加載之前。我試過設置異步:false。

添加AJAX代碼:

function deleteAccount(){ 
    event.preventDefault(); 

    var accountName = $('.account_name').filter(":selected").attr("name"); 

    $.ajax({ 
     type: "POST", 
     url: 'inc/functions.php', 
     data: {accountName:accountName}, 
     async: false, 
     success: function(response){ 
     $('#results').html(response + " has been deleted."); 
     } 
    }); 
}; 
+1

您將您的ajax調用參數發送到php文件。所以你也可以設置一些「標誌參數」,如?delete = true&id = 1。如果刪除isset = true - >調用delete_account() 用這種方法,你可以從你的ajax調用發送許多不同的參數到你的PHP文件,並選擇你想要執行的功能 – KURN

回答

3

如果你有多個功能,在你的PHP文件,那麼你可以這樣做::傳中額外的參數,在你的jQuery阿賈克斯,如:

$.ajax({ 
    url: "some_file.php?action=get_accounts" 
}).done(function() { 
    $(this).addClass("done"); 
}); 

,並在你的PHP文件中使用switch調用相應的函數依賴於你的Ajax action變量的值,如:

//in PHP 
..... 
$action = $_GET['action']; 
switch ($action) { 
    case "get_accounts": 
     //call the function 
     get_accounts(); 
     break; 
    case "otherFunction": 
     .... 
     break; 
} 
+0

我不斷收到一個未定義的索引錯誤:$ action = $ _GET ['action']; – hyphen

+0

@ user1476992你沒有在你的url中使用'action'參數,將你的ajax url改爲like :: url:'inc/functions.php?action = functionToCall' –

+0

對不起,我更新了我的ajax,因爲我粘貼在這裏。它包含查詢字符串。我認爲問題存在於我的主要php文件中,我調用了get_accounts()函數並將其分配給$ accounts變量。我如何從我的變量賦值中調用switch語句?即$ accounts =「get_accounts」;或$ accounts =「action = get_accounts」; – hyphen

相關問題