這是我第一次在這裏發帖,但我似乎無法找到我有問題的答案。我已經使用了多年的堆棧,但這是我第一次看到無法找到答案。如果我應該做一些不同的事情,請隨時讓我知道。
我動態地填充目錄中存在的文件名稱的按鈕。我需要使用jquery和ajax將點擊的按鈕名稱發送給我的控制器。我使用下面的代碼來做到這一點:
$currentDir = getcwd();
$files = scandir($currentDir);
$count = 0;
foreach ($files as $name) {
if(preg_match("/^sma\w*/", $name)){
$workingFiles = substr($name, strpos($name, "_") + 1);
$availableActions = explode(".", $workingFiles);
$class_action = $availableActions[0];
$buttonName = $class_action;
$count ++;
?>
<button id="<?php echo $class_action;?>" class="actionButtons"><? echo $buttonName; ?></button>
<script>
$(document).ready(function() {
$("#<?php echo $class_action;?>").click(function(){
var class_action = <?php echo $class_action;?>
$.ajax({ url: url + '?action=GetStatus&action=Execute',
type: 'POST',
data: JSON.stringify({action: "GetStatus", action: "Execute", actionItem: class_action}),
contentType: 'application/json; charset=utf-8',
success: function(output) {
if(output){
console.log(output);
}
else{
console.log("Nothing returned");
}
},
error: function() {
console.log("error in the execute call");
}
});
});
});
</script>
<?
}
}
與控制器,看起來像這樣:
if(isset($_GET['action'])){
$action = $_GET["action"];
switch($action){
case "GetStatus":
_setContent();
break;
case "Execute":
if(isset($_POST['data'])){
$data = json_decode($_POST['data']);
echo $data;
}
break;
想法?任何反饋將不勝感激!
爲什麼你使用'$ _GET [ '行動']':
相反,你可以使用這個下面的代碼?事實上,你爲什麼試圖將它發佈並附加到URL?你有沒有看過瀏覽器調試工具?請求中的表單數據是什麼?是否如您期望的那樣傳遞正確的信息? – Styphon
偉大的問題! @Styphon我正在使用$ _GET ['action']來激發正確的情況,因爲它正在查看URL參數操作。從那裏我需要看$ _POST ['data']來發送這些信息。在查看調試工具時,我似乎無法找到數據發佈的位置。看起來只有URL參數被髮布。 –