簡體   English   中英

如何從php jquery ajax獲取php控制器中的$ _POST值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM