Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery Post未将数据值传递到Php文件_Php_Jquery_Post - Fatal编程技术网

JQuery Post未将数据值传递到Php文件

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

我使用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 + 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无效吗?