2015-06-12 79 views
-2

我从AddSomething.php文件调用AJAX如下网络分配Ajax响应值到PHP变量

<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); 
?> 
+4

你可以将一个Ajax调用的结果分配给PHP变量。 PHP已经在服务器上运行,完成了它并将HTML/JavaScript发送到浏览器。在那个时候,你不能再使用PHP,因为它是一种服务器端语言,并且只会**在服务器上运行。 Ajax使用JavaScript,这是**客户端**语言。它仅在PHP完成并且服务器已将HTML/JavaScript发送到用户浏览器后运行**。 JavaScript在**客户端浏览器**中执行。 – Styphon

回答

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); 
+0

我知道PHP运行服务器端和JavaScript运行在客户端,但应该有办法,请建议如何实现即时通讯我的情况 – Sha

+0

我在选择'$(“#schedule”)调用ajax。 ){'并期望将响应分配给上述查询的条件以及PHP变量的条件'$ scheduleStartDate =''; $ scheduleEndDate ='';'有没有什么办法可以实现这个,请给我建议任何方法,你知道 – Sha

+0

@Nag,我在回答上面那样将查询到processClg.php – Styphon

0

,你认为你的方法水湿做好这项工作。

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

在心里也保持了Ajax响应数据保持在JS变量,你需要通过参数async:false

+0

你可以发布一些代码 – Sha

+0

'变种结果; $阿贾克斯({ 类型:“POST”, 异步:假, url:url, data:postdata, // dataType:“json “, 成功:function(data){ result = data; } }); result = jQuery.parseJSON(result); $('#startDate')。val(result.startDate); $('#endDate').val(result.endDate);' 该表单将如下所示:

\t
' –

1

您可以通过嵌入ajax result div在PHP变量存储AJAX结果为php tag

<?php 
$result='<div id="result"></div>';// Here you embed div in php tag and store in php varible 
?>