3

将 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

4

9 回答 9

6

试试这个:

<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 ;
   ?>
于 2013-04-05T11:48:11.137 回答
1

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

于 2013-04-05T11:44:21.430 回答
1

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

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

           });  
           event.preventDefault() ;
        });    
    });
</script>

添加event.preventDefault();您的按钮单击功能

于 2013-04-05T11:48:01.510 回答
0
$(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}));
       });
     });
于 2013-04-05T11:44:00.237 回答
0

试试这个:

<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

于 2013-04-05T11:44:40.150 回答
0

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

于 2013-04-05T11:49:00.677 回答
0

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

if( isset($_POST['id1']) )  {
// do something
}
于 2013-04-05T11:50:50.290 回答
0

试试这个代码,

 <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'] 访问

于 2013-04-05T12:08:08.750 回答
0

或者您可以通过这种方式使用 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 );
}
于 2013-04-05T12:28:37.167 回答