2013-11-01 52 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

相关问题