簡體   English   中英

如何將jquery變量傳遞給php然后顯示它

[英]how to pass a jquery variable to php and then display it

將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

試試這個:

<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 ;
   ?>

嘗試將輸入類型更改為按鈕而不是提交<input type="button" id="submit" name="submit"/>

問題是你的表單被提交, $.post用於ajax sumit。 為此,您需要阻止表單提交。

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

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

添加event.preventDefault(); 在你的按鈕點擊功能

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

試試上面的代碼。 首先:JS不允許這樣做: {id1: id,} (最后請參見逗號)。 這是PHP的一個特性。 實際上,你的JS代碼根本不應該執行,因為這是一個語法錯誤(假設你會在瀏覽器的控制台中找到它)

另一個問題:您必須阻止默認提交表單。 e.preventDefault()需要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}));
       });
     });

試試這個:

<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

使用隱藏字段設置要發送的值。 由於您使用的是提交,因此您的整個表單都已提交。 隱藏字段也會發送,可以使用隱藏字段的名稱直接訪問。

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
}

試試這段代碼,

 <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']訪問

或者你可以這樣使用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 );
}

暫無
暫無

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

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