我有以下代码:
<?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变量的值。
有人可以帮我解决这个问题吗?
此致 伊万
答案 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;
}
?>