【问题标题】:how to pass a jquery variable to php and then display it如何将jquery变量传递给php然后显示它
【发布时间】:2013-11-16 01:05:06
【问题描述】:

将 Jquery 变量传递给 php 的问题。

当我将变量 id 传递给 B.php 时,我收到此错误

"Notice: Undefined index: id1 in C:\xampp  \htdocs\PhpProject1\OtherUsableItems\B.php on line 2 

这个问题怎么解决???这个A.php

<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
  var id = 23; 
$("#submit").click(function(){
 $.post("B.php",
 {
     id1: id,

  } );      
   });
  });
 </script>
 </head>
 <body>
 <form action="B.php" method="post" >
 <input type="submit" id="submit" name="submit"/> 
 </form>
 </body>
 </html>

这个B.php

  <?php
   $a =$_POST['id1'];
   echo $a ;
   ?>

我希望将 id 变量传递给B.php

【问题讨论】:

  • 提交后你已经去B.php了,为什么不把你要发送的值隐藏输入字段,然后在B.php上读取呢?
  • 您收到错误C:\xampp \htdocs\PhpProject1。尝试使用http://localhost
  • 我也想把这个变量保存到mysql数据库中

标签: php javascript jquery


【解决方案1】:

试试这个:

<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
  var id = 23; 
$("#submit").click(function(){
 $.ajax(
    {
    url: "B.php",
    type: "POST",

    data: { id1: id},
    success: function (result) {
            alert('success');

    }
});     
   });
  });
 </script>
 </head>
 <body>
 <form  >
 <input type="button" id="submit" name="submit"/> 
 </form>
 </body>
 </html>

然后是 B.php

<?php
   $a =isset($_POST['id1'])?$_POST['id1']:'not yet';
   echo $a ;
   ?>

【讨论】:

    【解决方案2】:

    尝试将输入类型更改为按钮而不是提交 &lt;input type="button" id="submit" name="submit"/&gt;

    【讨论】:

      【解决方案3】:

      问题是您的表单已提交,$.post 用于 ajax sumit。为此,您需要阻止表单提交。

      <script>
           $(document).ready(function(){
              var id = 23; 
              $("#submit").click(function(){
                 $.post("B.php",
                 {
                    id1: id,
      
                 });  
                 event.preventDefault() ;
              });    
          });
      </script>
      

      在你的按钮点击函数中添加event.preventDefault();

      【讨论】:

      • 通过添加 e.preventDefault();错误已解决,但提交后应转到 B.php 并回显变量 a 的值
      • 那么,你需要移除ajax,$.post用于ajax提交。不会重定向到B.php。创建xmlhttp请求
      【解决方案4】:

      使用隐藏字段设置您要发送的值。由于您使用的是提交,因此您的整个表单都已提交。隐藏字段也被发送,可以使用隐藏字段的名称直接访问。

      【讨论】:

      • 那这道题jquery有什么用呢?
      • 那么他就不需要jquery了。他可以直接发送,而不用担心如何发送。
      【解决方案5】:

      一个 E_NOTICE 被 php 抛出,因为 POST-Array 的索引不存在。您可以切换 error_reporting 的通知,查看http://www.php.net/manual/de/errorfunc.configuration.php#ini.error-reporting 或检查索引是否存在:

      if( isset($_POST['id1']) )  {
      // do something
      }
      

      【讨论】:

        【解决方案6】:
        $(document).ready(function(){
          var id = 23; 
          $("#submit").click(function(e){
             $.post("B.php", {id1: id} );     
             e.preventDefault();
           });
         });
        

        试试上面的代码。第一的: JS 不允许这样做:{id1: id,}(见末尾的逗号)。这是 PHP 的一个特性。实际上,你的 JS 代码根本不应该被执行,因为这是一个语法错误(假设你会在浏览器的控制台中找到它)

        另一个问题:您必须防止默认提交表单。为此需要e.preventDefault()。没有它,将启动 ajax 发布,并且会发生比平常提交的表单。并且您的表单没有名称为 id1 的元素,假设第二个请求产生该错误消息。

        编辑: 这是通过常规提交发布一个值,因此浏览器被重定向到 B.php

        $(document).ready(function(){
              var id = 23; 
              $("#submit").click(function(){
                      $(this).closest("form")
                             .append($("<input>", {"type":"hidden", "name":"id1", "value":id}));
               });
             });
        

        【讨论】:

        • 通过添加 e.preventDefault();错误已解决,但提交后应转到 B.php 并回显变量 a 的值
        • 查看更新的答案。在那里我只需找到一个表单,将一个带有值的新隐藏字段放入其中。
        【解决方案7】:

        试试这个代码,

         <html>
         <head>
         <script src="jquery.js"></script>
         <script>
         $(document).ready(function(){
         var id = 23; 
         $("#submit").click(function(){
         $('#id1').val(id);
         });
         });
        </script>
         </head>
         <body>
         <form action="B.php" method="post" >
         <input type="submit" id="submit" name="submit"/> 
         <input type="hidden" name="id1" id="id1" value=""/>
        </form>
        </body>
        </html>
        

        在这里您可以将'id'的值传递给B.php,并将作为$_POST['id1']访问

        【讨论】:

          【解决方案8】:

          试试这个:

          <script>
          $(document).ready(function(){
             var id = 23; 
             $("#submit").click(function(e){
               e.preventDefault();
               $.post("B.php", {id1: id}, function(data){ //<---get the data from B.php
                  console.log(data);   //<--------show it here
                  alert(data);
               });      
             });
            });
           </script>
          

          由于您使用的是 ajax 功能,因此您必须停止表单提交功能。你有一个尾随逗号{id1 : id,}这是IE浏览器中的一个问题,但最新的其他浏览器可以正常工作。

          注意:

          您发布了此错误:

          "Notice: Undefined index: id1 in C:\xampp \htdocs......

          不要在文件系统$.post() 中运行页面不会这样工作。

          尝试使用http://localhost/yourapplication/page.php

          【讨论】:

          • 通过添加 e.preventDefault();错误已解决,但提交后应转到 B.php 并回显变量 a 的值
          • 你在 localhost 上检查这个
          • 在任何情况下,错误都会显示磁盘上文件的路径。如果 OP 试图从file://..../page.php 运行他的脚本,则根本不会出错,因为 PHP 根本不会被执行。
          • @Abhishek 我认为您现在必须使用回调函数。看看答案。
          【解决方案9】:

          或者你可以这样使用 submit()

          $(function(){
              var id = 23;
              $("#myform").submit(function() {
                  $.post("B.php", { id1: id }).done(function(data) {
                      alert( data );
                  });
                  return false; //true(post form data)
              });
          });
          

          和形式

          <form id="myform" method="post">
          <input type="submit" id="submit" name="submit" />
          </form>
          

          编辑:哦,是的,对于 B.php isset check 或 error_reporting(0);

          if(isset($_POST['id1'])){
              print_r( $_POST );
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-10
            • 2012-12-03
            • 1970-01-01
            • 1970-01-01
            • 2013-02-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多