PHP无法通过Ajax接收Javascript变量

时间:2017-04-14 19:19:41

标签: javascript php jquery 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();
  

这是文件中的php代码(app.php):

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

Google控制台日志打印:“调试对象:0”

文件目录如下:

主文件夹

    • 注册

      • 登录

          • JS

            • checks.js
  • 面板

    • app.php

3 个答案:

答案 0 :(得分:0)

Ajax意味着您没有通过浏览器操作进行表单提交,这会刷新页面。尝试摆脱是行并运行代码 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脚本更改为echo $ output。

答案 1 :(得分:0)

由于您要将表单发布到同一个php端点,所有您需要的是表单中的隐藏输入并且可以摆脱ajax

在提交事件处理程序中,您可以在浏览器发布表单之前更新脚本中任何来源的隐藏输入值

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

jQuery提交事件监听器:

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

从此处只需使用提交按钮提交表单即可。这将触发事件。

答案 2 :(得分:0)

您尚未提及哪个页面包含您的Ajax表单提交代码。我们假设您使用的是同一页面,即 app.php 。现在您的页面将如下所示:

<profile>
    <id>AddMgmtTest</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>admgmttestng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

虽然这不是100%标准的实现方式,但它只会给你一个参考。如果你想提供你想要达到的更具体的东西,我会进一步帮助你。我希望它有所帮助!!