AJAX如何将变量从JavaScript传递到PHP

3
我将通过ajax从javascript传递变量到另一个PHP页面。但我无法成功。以下是我目前的代码。
<script>
function loadXMLDoc()
        {
        $.ajax({
                    type: "POST",
                    url: "update.php",
                    data: { value : masterdata },
                    success: function(data)
                    {
                        alert("success!");
                    }
                }); 

}
$("button").on('click',function(){ loadXMLDoc(); });
</script>
masterdata变量来自另一个Javascript函数,在该函数中我已经将该变量声明为全局变量,就如下面的函数所示。
<script>

    var masterdata;      
    $("[data-slider]")

       .each(function () {
           var range;
            var input = $(this);
            $("<span>").addClass("output")
                .insertAfter(input);
            range = input.data("slider-range").split(",");
            $("<span>").addClass("range")
                .html(range[0])
                .insertBefore(input);
            $("<span>").addClass("range")
                .html(range[1])
                .insertAfter(input);
        })
        .bind("slider:ready slider:changed", function (event, data) {
            $(this).nextAll(".output:first")
                .html(data.value.toFixed(2));
                masterdata = data.value;

        });


</script>

在我的 update.php 文件中,我试图使用 $_REQUEST 访问变量。代码如下。
<?php

    $uid = $_REQUEST['value'];
    echo "Am I getting printed";
    echo $uid;
    // Do whatever you want with the $uid
?>

然而,如果我点击更新按钮,什么也不会发生。我只会收到一个警报,说我的ajax调用成功了。请有人帮帮我吗?


你期望什么? - u_mulder
我期望在我的update.php文件中打印$uid的值,这个文件是在点击“更新”按钮时调用的。 - ram esh
2
但是当你的 AJAX 请求返回时,唯一发生的事情就是弹出一个 "success" 的警告。可以尝试使用 "alert(data)" 作为示例,或者在成功函数中使用 data 变量。这是服务器的响应。 - user2759991
我对这些技术还比较新,不是很确定。 - ram esh
我看到数据已经从服务器返回。 - ram esh
显示剩余3条评论
2个回答

1
在您的成功函数中,您没有要求它显示返回的数据,这就是为什么您只能看到警报,将其更改为:
success: function(data)
   {
     alert(data);
   }

因为这里的data是您请求返回的值。
对于PHP部分,请记住一件事,只需调整您的PHP页面以显示所需的数据,并记住无论您如何生成此数据,使用echo或纯HTML, PHP代码的结果就是您在AJAX中获取的变量。 如果您使用JSON,则可以在PHP页面上执行以下操作:
$uid = $_REQUEST['value'];
$x.uid = $uid;
$x.something = "something";
return $x;

这样,您就可以将所有客户端数据作为对象提供,并以更加紧凑的方式对其进行操作。如果您想了解更多有关此主题的内容,请搜索RESTful API。

是的。我已经在警报中收到响应了。但是,我如何使它显示在单独的PHP文件中?例如,我通过ajax请求调用update.php文件。我通过ajax请求将javascript变量发送到update.php文件。我需要显示update.php文件而不是显示alert(data)。这可能吗? - ram esh
成功:函数(数据) { 警报(数据); }在上述函数中,我需要显示PHP文件的内容,而不是警报(data)。我不想要一个警报窗口,而是需要显示我在update.php文件中拥有的表格。使用ajax是否可能? - ram esh
我建议您从update.php文件返回JSON编码的数组。之后,您可以将值数组传回AJAX success函数,并添加必要的标记以在视觉上显示结果。 - Terry

0
我建议将从你的update.php脚本获取到的输出进行JSON编码,并将其传递回AJAX函数。在你的update.php文件中,你可以简单地使用PHP函数json_encode($var),然后将其输出。
<?php
    $uid = $_REQUEST['value'];
    echo json_encode($uid);
?>

从你的 AJAX 函数中,你应该指定 dataType (通常情况下,JS 会智能猜测返回的数据类型,但为了安全起见,我们应该始终进行指定):
function loadXMLDoc() {
    $.ajax({
        type: "POST",
        url: "update.php",
        data: { value : masterdata },
        dataType: "json",
        success: function(data) {
           // Log data into console for reference (and checking, perhaps)
           console.log(data);

           // Parse data here
        }
    }); 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接