将带有jQuery的变量传递给PHP的问题

时间:2015-07-23 20:46:46

标签: 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');

    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>

我在URL中有一个名为id的变量(例如http://www.url.com?id=1),我正在尝试将其发送到名为api.php的页面,我在那里进行数据库查询。然后我试图获取此id的相应值(在我的案例路径中)并返回它。但是,似乎变量id没有传递给api.php。我已经在api.php($ id = 1)中对id变量进行了硬编码,查询工作正常,之后我能够从数据库中获取值,但是在api.php中我将以下内容:

<?php

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

?>

然后它不起作用。我不确定$ .post()方法是否无效或由于某种原因我无法在PHP脚本中获取id变量的值。

有人可以帮我解决这个问题吗?

此致 伊万

2 个答案:

答案 0 :(得分:3)

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

您的第二个$.ajax()调用未指定type参数(或该调用的任何数据),因此将使用GET。在api.php文件中,您正在查看$_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()

(你不需要第一个api.php电话,我认为你已经混淆了这个功能的用法)。

此外,您需要实际输出<?php if( isset($_POST['id']) ) { echo $_POST['id']; } ?> 中的内容才能在JS中访问它,例如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNet.Identity;
using Microsoft.Owin.Security;


namespace stuff
{
    public class BACnetModel
    {
        private string _rmNum = "Room Number";
        public string RmNum { get { return _rmNum; } set{_rmNum = value;} }

        private string _avRes = "70";
        public string AvRes { get { return _avRes; } set {_avRes = value;} }

        private string _bvRes = "T";
        public string BvRes { get { return _bvRes; } set { _bvRes = value; } }

        private string _mvRes = "O";
        public string MvRes { get { return _mvRes; } set { _mvRes = value; } }
    }
}

答案 1 :(得分:0)

在这里,我认为你可能会感到困惑。

$.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;
  }

?>