[英]How do I get $_POST value in php controller from php jquery ajax
這是我第一次在這里發帖,但似乎找不到我所遇到問題的答案。 我已經使用stack多年了,但這是我似乎找不到答案的第一次。 如果我應該做不同的事情,請隨時讓我知道。
我正在根據目錄中存在的文件名動態填充按鈕。 我需要使用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;
想法? 任何反饋將不勝感激!
為什么循環中有$(document).ready
?
相反,您可以使用以下代碼:
$(document).ready(function() { $(".actionButtons").click(function() { var class_action = $(this).attr('id') $.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 src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <?php $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 ++; echo "<button id="$class_action" class='actionButtons'>" . $buttonName. "</button>"; } } ?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.