使用jQuery向PHP传递变量时出现的问题

使用jQuery向PHP传递变量时出现的问题,php,jquery,ajax,Php,Jquery,Ajax,我有以下代码: <?php $id = $_GET['id']; ?> <html> <head> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> </head> <body> <script> var id = $.urlParam('id');

我有以下代码:

<?php

    $id = $_GET['id'];

?>
<html>
    <head>
        <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    </head>
    <body>
    <script>
    var id = $.urlParam('id');

    var id = <?php echo $id; ?>;

    $.post("api.php", { id: id });

    $.ajax({                                      
      url: 'api.php',                        
      data: "",                        
      dataType: 'json',                      
      success: function(data)          
      {
        var path = data[0];         
        alert(path);
      } 
    }); 
    </script>
    </body>
</html>

变量id=$.urlParam('id');
变量id=;
$.post(“api.php”,{id:id});
$.ajax({
url:'api.php',
数据:“,
数据类型:“json”,
成功:功能(数据)
{
变量路径=数据[0];
警报(路径);
} 
}); 
我在URL中有一个名为id的变量(例如),我试图将它发送到一个名为api.php的页面,在那里我有数据库查询。然后我尝试获取这个id的对应值(在我的案例路径中)并返回它。但是,似乎没有将变量id传递给api.php。我已经在api.php($id=1)中硬编码了id变量,查询工作正常,之后我可以从数据库中获取值,但在api.php中,我输入了以下内容:

<?php

  if($_POST) {
     $id = $_POST['id'];
  }

?>

那就不行了。我不确定$.post()方法是否不起作用,或者由于某种原因,我无法在PHP脚本中获取id变量的值

有人能帮我解决这个问题吗

问候,,
Ivan

首先,您的
$.post()
调用没有回调,因此即使发出post请求,在成功时也没有代码可执行

第二个调用,
$.ajax()
没有指定
类型
参数(或调用的任何数据),因此将使用
GET
。在
api.php
文件中,您正在检查
$\u POST
超全局,它当然不包含
id
的值,因为您使用的是
GET
,而不是
POST

您应该更新
$.ajax()
调用,如下所示:

$.ajax({                                      
    url: 'api.php',                        
    data: { 'id': <?php echo $_GET['id'] ?> },                        
    dataType: 'json',   
    type: 'post'               
}).done(function(data) {  
    var path = data[0];         
    alert(path);
});

首先,您的
$.post()
调用没有回调,因此即使发出post请求,在成功时也没有代码可执行

第二个调用,
$.ajax()
没有指定
类型
参数(或调用的任何数据),因此将使用
GET
。在
api.php
文件中,您正在检查
$\u POST
超全局,它当然不包含
id
的值,因为您使用的是
GET
,而不是
POST

您应该更新
$.ajax()
调用,如下所示:

$.ajax({                                      
    url: 'api.php',                        
    data: { 'id': <?php echo $_GET['id'] ?> },                        
    dataType: 'json',   
    type: 'post'               
}).done(function(data) {  
    var path = data[0];         
    alert(path);
});

首先,您的
$.post()
调用没有回调,因此即使发出post请求,在成功时也没有代码可执行

第二个调用,
$.ajax()
没有指定
类型
参数(或调用的任何数据),因此将使用
GET
。在
api.php
文件中,您正在检查
$\u POST
超全局,它当然不包含
id
的值,因为您使用的是
GET
,而不是
POST

您应该更新
$.ajax()
调用,如下所示:

$.ajax({                                      
    url: 'api.php',                        
    data: { 'id': <?php echo $_GET['id'] ?> },                        
    dataType: 'json',   
    type: 'post'               
}).done(function(data) {  
    var path = data[0];         
    alert(path);
});

首先,您的
$.post()
调用没有回调,因此即使发出post请求,在成功时也没有代码可执行

第二个调用,
$.ajax()
没有指定
类型
参数(或调用的任何数据),因此将使用
GET
。在
api.php
文件中,您正在检查
$\u POST
超全局,它当然不包含
id
的值,因为您使用的是
GET
,而不是
POST

您应该更新
$.ajax()
调用,如下所示:

$.ajax({                                      
    url: 'api.php',                        
    data: { 'id': <?php echo $_GET['id'] ?> },                        
    dataType: 'json',   
    type: 'post'               
}).done(function(data) {  
    var path = data[0];         
    alert(path);
});

这是我想你可能会困惑的地方

$.post()
是使用完整的
$.ajax
的快捷方式。您可以使用其中一个,而不是同时使用两个

要使用
$.post
,您需要对返回的数据进行回调

尝试删除
$.ajax
并执行以下操作

$.post("api.php", { id: id })
    .done(function(response){
        alert(response);
    });
现在在php中,您不会向页面显示任何输出

因此,请尝试:

<?php

  if(isset($_POST['id']) ) {
     $id = $_POST['id'];
     echo $id;
  }

?>

我想你可能会感到困惑

$.post()
是使用完整的
$.ajax
的快捷方式。您可以使用其中一个,而不是同时使用两个

要使用
$.post
,您需要对返回的数据进行回调

尝试删除
$.ajax
并执行以下操作

$.post("api.php", { id: id })
    .done(function(response){
        alert(response);
    });
现在在php中,您不会向页面显示任何输出

因此,请尝试:

<?php

  if(isset($_POST['id']) ) {
     $id = $_POST['id'];
     echo $id;
  }

?>

我想你可能会感到困惑

$.post()
是使用完整的
$.ajax
的快捷方式。您可以使用其中一个,而不是同时使用两个

要使用
$.post
,您需要对返回的数据进行回调

尝试删除
$.ajax
并执行以下操作

$.post("api.php", { id: id })
    .done(function(response){
        alert(response);
    });
现在在php中,您不会向页面显示任何输出

因此,请尝试:

<?php

  if(isset($_POST['id']) ) {
     $id = $_POST['id'];
     echo $id;
  }

?>

我想你可能会感到困惑

$.post()
是使用完整的
$.ajax
的快捷方式。您可以使用其中一个,而不是同时使用两个

要使用
$.post
,您需要对返回的数据进行回调

尝试删除
$.ajax
并执行以下操作

$.post("api.php", { id: id })
    .done(function(response){
        alert(response);
    });
现在在php中,您不会向页面显示任何输出

因此,请尝试:

<?php

  if(isset($_POST['id']) ) {
     $id = $_POST['id'];
     echo $id;
  }

?>


您在JS中定义了两次
id
。如果您查看ajax request,是否存在值?
$。ajax()
执行get请求,而不是post。这意味着当您执行.ajax()调用时,$\u POST将不会被设置。如果您尚未在页面中包含该插件函数,则无法使用
$.urlParam('id')
。将抛出异常并破坏您的代码。还有背对背的ajax请求…第二个没有数据和GET,第一个没有完成回调。ajax选项
键入:'post'
@ToniMichelCaubet更不用说任何数据了…您在JS中定义了两次
id
。如果您查看ajax request的值是多少?
$。ajax()
是否有get reques