将javascript变量数据传递到同一php文件中的php变量

将javascript变量数据传递到同一php文件中的php变量,php,ajax,Php,Ajax,我有一个javascript,需要将数据传递给php变量。我已经在寻找如何实现这一点,但我不能使它正常工作。以下是我所做的: Javascript: $(document).ready(function() { $(".filter").click(function() { var val = $(this).attr('data-rel'); //check value alert($(this).att

我有一个javascript,需要将数据传递给php变量。我已经在寻找如何实现这一点,但我不能使它正常工作。以下是我所做的:

Javascript:

$(document).ready(function() {

        $(".filter").click(function() {
            var val = $(this).attr('data-rel');
            //check value
            alert($(this).attr('data-rel'));

            $.ajax({
                type: "POST",
                url: 'signage.php',
                data: "subDir=" + val,
                success: function(data)
                {
                    alert("success!");
                }
            });
        });
    });    
然后在我的php标签上:

<?php
if(isset($_GET['subDir']))
{
    $subDir = $_GET['subDir'];
    echo($subDir);
}
else
{
    echo('fail');
}?>    


我总是收到失败的文本,所以一定是出了什么问题。我刚开始学习php和jquery,我不知道怎么了。我需要你的帮助。顺便说一句,它们位于同一个文件signage.php上。提前感谢

您使用
POST
方法发送数据,而GET使用
GET

<?php
if(isset($_POST['subDir']))
{
    $subDir = $_POST['subDir'];
    echo($subDir);
}
else
{
    echo('fail');
}?>    

您正在使用
POST
方法发送数据,而GET正在使用
GET

<?php
if(isset($_POST['subDir']))
{
    $subDir = $_POST['subDir'];
    echo($subDir);
}
else
{
    echo('fail');
}?>    

您已经在ajax中使用了方法
POST
,所以您也必须在php中更改为
POST

<?php
if(isset($_POST['subDir']))
{
    $subDir = $_POST['subDir'];
    echo($subDir);
}
else
{
    echo('fail');
}?> 

您已经在ajax中使用了方法
POST
,所以您也必须在php中更改为
POST

<?php
if(isset($_POST['subDir']))
{
    $subDir = $_POST['subDir'];
    echo($subDir);
}
else
{
    echo('fail');
}?> 

当你使用
$\u GET
你必须在你的url中设置你的数据值,我的意思是

    $.ajax({
          type: "POST",
          url: 'signage.php?subDir=' + val,
          data: "subDir=" + val,
          success: function(data)
          {
              alert("success!");
          }
});

或者将您的服务器端代码从
$\u GET
更改为
$\u POST

当您使用
$\u GET
时,我的意思是,您必须在url中设置数据值

    $.ajax({
          type: "POST",
          url: 'signage.php?subDir=' + val,
          data: "subDir=" + val,
          success: function(data)
          {
              alert("success!");
          }
});

或者将服务器端代码从
$\u GET
更改为
$\u POST

编辑javascript代码更改POST以获得ajax类型

$(document).ready(function() {

    $(".filter").click(function() {
        var val = $(this).attr('data-rel');
        //check value
        alert($(this).attr('data-rel'));

        $.ajax({
            type: "GET",
            url: 'signage.php',
            data: "subDir=" + val,
            success: function(data)
            {
                alert("success!");
            }
        });
    });
}); 

编辑javascript代码更改帖子以获得ajax类型

$(document).ready(function() {

    $(".filter").click(function() {
        var val = $(this).attr('data-rel');
        //check value
        alert($(this).attr('data-rel'));

        $.ajax({
            type: "GET",
            url: 'signage.php',
            data: "subDir=" + val,
            success: function(data)
            {
                alert("success!");
            }
        });
    });
}); 

当你以这种方式回复POST呼叫时,你需要三件事-从
\u POST
读取数据,将其正确地放在那里,然后用JSON回复

$.ajax({
    type: "POST",
    url: 'signage.php',
    data: {
        subDir: val,
    }
    success: function(answer)
    {
        alert("server said: " + answer.data);
    }
});
或者:

$.post(
    'signage.php',
    {
        subDir: val
    },
    function(answer){
        alert("server said: " + answer.data);
    }
}
然后在答复中:

<?php
    if (array_key_exists('subDir', $_POST)) {
        $subDir = $_POST['subDir'];
        $answer = array(
            'data' => "You said, '{$subDir}'",
        );
        header("Content-Type: application/json;charset=utf-8");
        print json_encode($answer);
        exit();
    }
更可靠的检查方法是使用辅助功能验证请求的XHR状态,例如:

/**
 * isXHR. Answers the question, "Was I called through AJAX?".
 * @return boolean
 */
function isXHR() {
    $key = 'HTTP_X_REQUESTED_WITH';
    return array_key_exists($key, $_SERVER)
        && ('xmlhttprequest'
             == strtolower($_SERVER[$key])
           )
    ;
}
现在你应该:

if (isXHR()) {
    // Now you can use both $.post() or $.get()

    exit();
}
实际上,您可以将AJAX代码卸载到另一个文件中:

if (isXHR()) {
    include('signage-ajax.php');
    exit();
}

当你以这种方式回复POST呼叫时,你需要三件事-从
\u POST
读取数据,将其正确地放在那里,然后用JSON回复

$.ajax({
    type: "POST",
    url: 'signage.php',
    data: {
        subDir: val,
    }
    success: function(answer)
    {
        alert("server said: " + answer.data);
    }
});
或者:

$.post(
    'signage.php',
    {
        subDir: val
    },
    function(answer){
        alert("server said: " + answer.data);
    }
}
然后在答复中:

<?php
    if (array_key_exists('subDir', $_POST)) {
        $subDir = $_POST['subDir'];
        $answer = array(
            'data' => "You said, '{$subDir}'",
        );
        header("Content-Type: application/json;charset=utf-8");
        print json_encode($answer);
        exit();
    }
更可靠的检查方法是使用辅助功能验证请求的XHR状态,例如:

/**
 * isXHR. Answers the question, "Was I called through AJAX?".
 * @return boolean
 */
function isXHR() {
    $key = 'HTTP_X_REQUESTED_WITH';
    return array_key_exists($key, $_SERVER)
        && ('xmlhttprequest'
             == strtolower($_SERVER[$key])
           )
    ;
}
现在你应该:

if (isXHR()) {
    // Now you can use both $.post() or $.get()

    exit();
}
实际上,您可以将AJAX代码卸载到另一个文件中:

if (isXHR()) {
    include('signage-ajax.php');
    exit();
}

我试图将ajax调用中的值传递给php变量。$\u POST是正确答案还是$\u GET?请阅读下面的答案啊,我知道了,我将我的更改为$\u POST,但我仍然有失败文本。当点击事件被触发时,我得到了正确的数据,它提醒成功!但是在我的php标签上,它说失败我不明白。检查
var val
的值并尝试使用
数据:{subDir:val},
在检查php标签上的if(isset($\u POST['subDir'])时,它没有设置。这就是错误。因此,它回显失败文本。我试图将ajax调用中的值传递给php变量。$\u POST是正确答案还是$\u GET?请阅读下面的答案啊,我知道了,我将我的更改为$\u POST,但我仍然有失败文本。当点击事件被触发时,我得到了正确的数据,它提醒成功!但是在我的php标签上,它说失败我不明白。检查
var val
的值并尝试使用
数据:{subDir:val},
在检查php标签上的if(isset($\u POST['subDir'])时,它没有设置。这就是错误。好的,谢谢你的回答,我先试试你的建议。好的,谢谢你的回答,我先试试你的建议。