2014-06-13 75 views
0

我正在嘗試使用AJAX調用PHP函數。我已經檢查了堆棧溢出解決方案(它在羣衆中顯示),但它似乎仍然不適合我。請注意,PHP代碼和JavaScript/jQuery/AJAX代碼都在同一個文件中。使用AJAX從JavaScript調用PHP函數

下面是我寫的代碼,用於嘗試獲得所需的結果,包含的兩個PHP文件與我需要調用的任何PHP函數無關,因此我沒有發佈這些代碼。

(注:ExecuteAll()函數被調用,但之後沒有任何反應/在AJAX代碼)

<input type="button" value="Show all client data" id="all"> 

<? 
include('inc/php/stringgenerator.php'); 
include('inc/php/client.php'); 

$generator = new StringGenerator; 

$clients = array(); 

for($i = 0; $i < 250; $i++){ 
    $clients[$i] = new Client; 
    $clients[$i]->SetId($i); 
    $clients[$i]->SetAddress($generator->GetGeneratedString(rand(12, 24))); 
    $clients[$i]->SetNotes("Notes for client " . $i); 

    $scores = array(); 
    for($j = 0; $j < 25; $j++)$scores[$j] = rand(0, 10); 
    $clients[$i]->SetScores($scores); 
}  

echo "Clients generated"; 
?> 
<? 
switch($_POST["functionname"]){ 
    case 'DisplayAllClientData': 
     DisplayAllClientData(); 
     break; 
}; 

function DisplayAllClientData(){ 
    for($i = 0; $i < count($clients); $i++){ 
     $clients[$i]->PrintClientData(); 
     echo "<hr>"; 
    } 
} 
?> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

<script type="text/javascript" language="javascript"> 
$(document).ready(function(){ 
    $("#all").click(function(){ ExecuteAll(); }); 
}); 

function ExecuteAll(){ 
    $.ajax({ 
     type: "POST", 
     url: 'index.php', 
     data: {functionname: 'DisplayAllClientData'}, 
     succes:function(){ 
      alert("Success!"); 
     } 
    }); 
} 
</script> 

回答

1

試試這個:

在JS:

function ExecuteAll(){ 
    $.ajax({ 
     type: "POST", 
     url: 'index.php', 
     data: {command: 'all_client_data'}, 
     succes:function(){ 
      alert("Success!"); 
     } 
    }); 
} 

然後在PHP中聲明DisplayAllClientData()函數後執行以下操作:

if ($_POST['command'] == 'all_client_data') [ 
    DisplayAllClientData(); 
} 

沿着這些線應該工作。

+0

嘿男人,謝謝你的回覆!我會在早上第一件事。 – Nick

+0

沒有問題。贊成票不會受到傷害; ) – hanleyhansen

+0

會做,需要一個代表upvote壽:( – Nick