簡體   English   中英

如何將 JavaScript 值傳遞給 Ajax 內的 PHP

[英]How to pass JavaScript values to PHP within the Ajax

這是情況。

我正在嘗試將一些 Javascript 值傳遞給 ajax 中的各種 PHP 函數,以便它可以正確顯示在頁面上。

這是我的代碼:

       $("[data-department-id]").click(function() {                   
                id = $(this).attr('data-department-id');     
                document.getElementById('department'+id).innerHTML = '';                  
                $.ajax({
                    url:"/desk/template/fetchtickets.php",
                    type: 'POST', 
                    dataType: 'json',                      
                    data : {
                      'id' : id  
                    },
                    success: function (res) {                            
                        $('#department'+id).append('<ul>');
                        for (var key in res) { 
                            
                            var ticketId = res[key].id;
                            var clientId = res[key].clientid;
                            var clientName = res[key].name;
                            var clientColor = res[key].hexColor;    
                            
                           <?php  $ticketId = '"+ticketId+"';   ?>   
                           <?php  $clientId = '"+clientId+"';   ?>   
                           <?php  $clientName = '"+clientName+"';   ?>   
                           <?php  $clientColor = 'clientColor';   ?> 
                           
                           $('#department'+id).append('<li class="list-group-item list-group-item-light" data-date-2="<?php echo Ticket::lastReplyStamp($ticketId); ?>"> <span class="text-width"><a href="?route=tickets/manage&id='+res[key].id+'">'+res[key].ticket+'  '+res[key].subject+'</a></span><div class="tools" ><span class="client-listing"> <?php clientBadge($clientId,$clientName,$clientColor); ?>    <?php // echo "<scipt>document.writeln(test)</script>";    ?> '+test+'      </div></div></li>');
                        }                     
                        $('#department'+id).append('</ul>');  
                    }
                });                                       
            })

當我做一個 console.log();

它顯示了正確的值,但是,當我執行 echo $ticketId 時,它顯示 +ticketId+。

現在我確實做了一個 document.write 和 document.writeln ,但它仍然不起作用。

有沒有合適的解決方案來解決我的問題?

您不能在此處添加 php 代碼。您可以使用 JQuery 更改 Dom 中的值或設置一些隱藏的輸入值,但您不能在 JS 中設置 php 變量。 PHP 在服務器端運行。 當 php 代碼運行時,您的 js 代碼正在等待在客戶端計算機上運行。

這些行總是將被解釋為從服務器端分配的字符串。

<?php  $ticketId = '"+ticketId+"';   ?>   
<?php  $clientId = '"+clientId+"';   ?>   
<?php  $clientName = '"+clientName+"';   ?>   
<?php  $clientColor = 'clientColor';   ?> 

您的代碼處理順序是這樣的:

  1. PHP 代碼得到處理
  2. PHP 返回 HTML
  3. 用戶單擊一個元素(在您的情況下data-department-id
  4. JQuery 發送 ajax 請求
  5. 服務器處理請求並將響應發送回前端
  6. Ajax 成功 function 收到響應,現在在 javascript 變量res中有響應,作為success(res) ZC1C42507C17838
  7. 執行成功里面的所有代碼

或者,如果服務器拋出錯誤響應,則 6. 和 7. 不會觸發錯誤回調

但它的主要部分,你的成功()中的 PHP 代碼 function 不會像你想的那樣運行,這是在 Ajax 收到響應之后。 此時您所能做的就是使用 javascript 來操作變量。

因此,簡而言之,更改下面的部分並使用 javascript 或 jQuery 如果您有根據響應更改 DOM 元素。

<?php  $ticketId = '"+ticketId+"';   ?>   
...
...

例如,假設您有一個顯示票證 ID 的 H1 標簽。 你會做

// jQuery
$('#ticketIdElement').text(res.id);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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