JQuery Post未将数据值传递到Php文件
我使用jQuery函数$.post将一些值传递给php文件,然后php文件使用这些值引用mySQL数据库,并在post success函数中解析出结果值。然而,由于某种原因,当我尝试使用$u POST标记获取php文件中的数据时,我注意到索引是未定义的。以下是我的js代码:JQuery Post未将数据值传递到Php文件,php,jquery,post,Php,Jquery,Post,我使用jQuery函数$.post将一些值传递给php文件,然后php文件使用这些值引用mySQL数据库,并在post success函数中解析出结果值。然而,由于某种原因,当我尝试使用$u POST标记获取php文件中的数据时,我注意到索引是未定义的。以下是我的js代码: var curX = 2; var curY = 6; function move(moveX, moveY) { var position = { x: curX + moveX, y: curY + m
var curX = 2;
var curY = 6;
function move(moveX, moveY) {
var position = {
x: curX + moveX,
y: curY + moveY
}
$.post('php/tilecheck.php', position, function(data) {
//console.log(data);
curX += moveX;
curY += moveY;
var n = data.split("\"");
boundary(n[3], n[1]);
boundary(n[7], n[5]);
boundary(n[11], n[9]);
boundary(n[15], n[13]);
/*boundary(data.left,'left');
boundary(data.right, 'right');
boundary(data.top, 'top');
boundary(data.bottom, 'bottom');*/
})
}
function boundary(value, pos) {
if(value == 1){
$("#a" + pos).css('display', 'none');
}
else {
$("#a" + pos).css('display', '');
}
}
以及它所指的php文件:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
include('db-info.php');
$x = $_POST['x'];
$y = $_POST['y'];
if(!empty($_POST)) {
$q = "SELECT * FROM tiles WHERE xpos = ".($x - 1)." AND ypos = $y LIMIT 1";
$lefttile = mysql_fetch_assoc(mysql_query($q));
$q = "SELECT * FROM tiles WHERE xpos = ".($x + 1)." AND ypos = $y LIMIT 1";
$righttile = mysql_fetch_assoc(mysql_query($q));
$q = "SELECT * FROM tiles WHERE xpos = $x AND ypos = ".($y - 1)." LIMIT 1";
$toptile = mysql_fetch_assoc(mysql_query($q));
$q = "SELECT * FROM tiles WHERE xpos = $x AND ypos = ".($y + 1)." LIMIT 1";
$bottomtile = mysql_fetch_assoc(mysql_query($q));
$json = array(
"left" => $lefttile['bound'], "right" => $righttile['bound'],
"top" => $toptile['bound'], "bottom" => $bottomtile['bound']
);
$output = json_encode($json);
echo $output;
}
else
echo "No value";
?>
奇怪的是,即使这些值在php中没有定义,它仍然在一个数组中输出正确的数据,这是由控制台日志确认的。然而,要访问数组中的那些值,我必须使用对函数边界的固定调用,而注释掉的代码不起作用。如果你有任何想法或问题,请告诉我。谢谢。检查您在PHP中从jQuery获得的信息:
print_r($_POST);
并检查“x”和“y”的正确命名。我试一下。。您有JSON响应。。所以你可以用它 !!在循环之前需要添加一个检查,以查看响应是否成功。这是我的想法
$.ajax({
url: 'php/tilecheck.php',
data: position,
type: 'POST',
dataType: 'json',
success: function(data) {
$.each(data, function(key,value){
if(value == 1){
$("#a" + key).css('display', 'none');
}
else {
$("#a" + key).css('display', '');
}
});
}
});
当您使用这个-console.logdata;您确定这个url>'php/tilecheck.php'是正确的吗?在PHP代码的第一行上做一个测试回音,以了解它是否正常工作。正如我所说,控制台日志输出正确的数组{left:1,right:1,top:0,bottom:1},但我无法在应用的修复程序之外引用它。我已经用echo检查了php,它确实在工作。检查开发者工具中的网络选项卡。。或者萤火虫。。看看你是不是正确地派了这些人过来我不明白。错误是用PHP还是JavaScript?顺便说一句,在$.post中,您必须添加'json'作为最后一个参数,以告诉jQuery您需要json@wirey每当我调用通过$.post传递值的函数时,网络选项卡就会显示:NAME:tilecheck.php,METHOD:post,STATUS:200/OK,TYPE:text/html。它似乎正确地传递了它;不支持数组和$\u printf;这是相当无效的。你可能是说打印;,哪一个最好用在一个元素中?这是一个拼写错误,对不起。我的意思是打印以检查post值。您可以看到从jquery实际发布的内容。尝试此操作后,无效:。结果与我尝试我的原始代码时类似,因此我认为php文件如何接收或传递值可能存在问题。谢谢你的回答!改用.ajax试试。哦,哇,这很管用!非常感谢。并不是说我太在意,只是好奇而已,但是php仍然在抛出一个未定义的$u POST索引的通知。你知道为什么吗?如果你不介意的话,你知道为什么.ajax有效,而.post无效吗?