簡體   English   中英

PHP無法通過Ajax接收Javascript變量

[英]PHP unable to receive Javascript variable via Ajax

已解決:我沒有意識到ajax僅在該實例中發送數據,並且重定向創建了一個新實例。

我查看了所有stackoverflow結果以尋求幫助,但沒有一個起作用。

我正在嘗試通過POST向php發送變量mmm,並且由於某種原因php無法檢索它。 我不知道我在做什么錯。

這是javascript代碼(在checks.js文件中):

$.ajax({
   type: "POST",
   url: 'https://www.example.com/panel/app.php',
   data: {mmm: 145},
   success: function(data) {
      alert("success");
   }
});
document.getElementById("adminLoginForm").submit();

這是文件(app.php)中的php代碼:

<?php
   $output = (isset($_POST['mmm'])) ? $_POST['mmm'] : 0;
   echo "<script>console.log( 'Debug Objects: " . $output . "' );</script>";
?>

Google控制台日志打印:“調試對象:0”

文件目錄如下:

主資料夾

  • 基礎

    • 注冊

      • 登錄

        • 基礎

          • JS

            • checks.js
  • 面板

    • app.php

Ajax意味着您沒有通過瀏覽器操作提交表單,這會刷新頁面。 嘗試擺脫document.getElementById("adminLoginForm").submit();這行,然后運行代碼document.getElementById("adminLoginForm").submit(); 然后,您可能會獲得警報成功。

$.ajax({
   type: "POST",
   url: 'https://www.example.com/panel/app.php',
   data: {mmm: 145},
   success: function(data){
      alert("success");
      console.log( 'Debug Objects: ' + data )
   }
});

並將PHP腳本更改為只回顯$ output。

由於您將表單發布到同一php終結點,因此您所需要的只是表單中的隱藏輸入,並且可以擺脫ajax

在提交事件處理程序中,您可以在瀏覽器發布表單之前從腳本中的任何源更新隱藏輸入的值。

<input type="hidden" name="mmm" id="input_mmm">

jQuery提交事件偵聽器:

$('#adminLoginForm').submit(function(){
    $('#input_mmm').val( new_value);
});

在這里,通常使用提交按鈕提交表單。 這將觸發事件。

您沒有提到哪個頁面包含您的Ajax表單提交代碼。 讓我們假設您使用的是同一頁面,即app.php 現在您的頁面將如下所示:

<?php
   $output = (isset($_POST['mmm'])) ? $_POST['mmm'] : 0;
   if($output !== 0) {
       echo "SUCCESS: Thanks for submitting value=". $output." Something:".$_POST['something'] ;
       die;
   }
?>
<html>
    <head>
        <title>Test</title>
        <script src="jquery.min.js"></script>
        <script>
        function submitData() {
            var somethingVal = $("#something").val();
            $.ajax({
               type: "POST",
               url: 'http://localhost/app.php',
               data: {mmm: 145, something: somethingVal},
               success: function(data){
                  $("#message").html(data);
               }
            });

            //document.getElementById("adminLoginForm").submit();
            //Stop form submission
            return false;
        }

        </script>
    </head>
    <body>
        <div id="message"></div>
        <form method="post" id="adminLoginForm" onsubmit="return submitData()">
            <input type="text" value="Something" name="something" id="something"/>
            <input type="submit" value="Submit"/>
        </form>
    </body>
</html>

盡管這不是實現目標的100%標准方法,但它只會為您提供參考。 如果您將提供您想要實現的更具體的目標,我將提供進一步的幫助。 希望對您有所幫助!!

暫無
暫無

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

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