将ajax响应值分配给PHP变量

时间:2015-06-12 10:47:26

标签: php jquery ajax mysqli

我从AddSomething.php文件调用ajax,如下所示

<script> 
    var dataValue; 
    $("#schedule").change(function () { 
        var value = $('#schedule option:selected').text(); 
        var ajaxCheck = $.ajax({ 
            url: 'processClg.php', 
            type: 'POST', 
            dataType: 'json', // processClg.php will return string means change to text 
            data: { id: value }, 
            success: function(data){ 
                dataValue = data; 
                console.log(dataValue); 
            } 
        }); 
    }); 
</script>

在网络中获取响应如下

[{
    "id": "2",
    "scheduleName": "abc",
    "subject": "Patho",
    "university": "xyz",
    "facultyName": "Dr",
    "scheduleStartDate": "2015-06-05",
    "scheduleEndDate": "2015-06-09"
}]

在控制台中显示[Object]

如何将上述值分配给同一页面中的以下PHP变量

<?php
    $scheduleStartDate ='';//Here How can i assign respected ajax responsevalue
    $scheduleEndDate = '';//Here How can i assign respected ajax response value

    $qry = "SELECT * FROM `mytable`
        WHERE `university` LIKE ''//Here How can i assign value  
        ORDER BY `university` DESC,student_name ASC";
?>

processClg.php文件代码

<?php
    include "config.php";
    $qry = "SELECT * FROM `schedule` WHERE scheduleName LIKE '".$_POST['id']."'";
    $res = mysqli_query($link, $qry);
    //echo $res;

    while($row = mysqli_fetch_assoc($res))
        $test[] = $row; 

    echo json_encode($test);
?>

3 个答案:

答案 0 :(得分:2)

您无法将Ajax调用的结果分配给PHP变量。 PHP已经在服务器上运行,完成它并将HTML / JavaScript发送到浏览器。此时,您不能再使用PHP,因为它是服务器端语言,并且在服务器上运行。 Ajax使用JavaScript,这是一种客户端语言。它仅在 之后运行PHP,并且服务器已将HTML / JavaScript发送到用户浏览器。 JavaScript在客户端浏览器中执行。

你需要重新思考你在做什么以及你在做什么。如果您需要使用Ajax调用的结果在PHP中执行某些操作,请在 processClg.php 文件中执行此操作。您首先执行所有PHP,然后向浏览器发送响应以向用户显示内容。如果用户不需要任何类型的确认或确认,那么您只需发送Ajax请求而不需要回复。

看起来你正试图动态加载一些大学信息。你应该做的是把这部分:

 $scheduleStartDate ='';//Here How can i assign respected ajax responsevalue
 $scheduleEndDate = '';//Here How can i assign respected ajax response value

$qry = "SELECT * FROM `mytable`
    WHERE `university` LIKE ''//Here How can i assign value  
    ORDER BY `university` DESC,student_name ASC";
第一次查询后进入processClg.php

。然后,您将获得查询结果并将其传递回HTML页面,如下所示:

$results = array();
$qry = "SELECT * FROM `mytable`
    WHERE `university` LIKE ''  
    ORDER BY `university` DESC,student_name ASC";
$result = mysqli_query($link, $qry);
while ($row = mysqli_fetch_assoc($result))
{
    $results[] = $row;
}
echo json_encode($results);

答案 1 :(得分:1)

您可以将ajax result div嵌入php tag

,将ajax结果存储在php变量中
<?php
 $result='<div id="result"></div>';// Here you embed div in php tag and store in php varible
?>

答案 2 :(得分:0)

你不能按照自己的方式做这项工作。

为此,您需要将返回值分配给任何隐藏的字段表单值并提交表单。

还要记住ajax响应数据保留在js变量中,需要传递参数async:false