首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从PHP获取变量到javascript (在PHP变量更改后回显不更新)

从PHP获取变量到javascript (在PHP变量更改后回显不更新)
EN

Stack Overflow用户
提问于 2017-05-22 19:11:49
回答 1查看 78关注 0票数 0

我正在编写一个脚本,该脚本根据我的数据库中的内容形成一个网页。对于他的函数,我在页面加载时以及页面需要更新时调用一个java脚本函数。

首先,我编写了一个脚本,从数据库中获取信息,然后通过echo "var region_list = ". $js_region_list . ";\n";将其传递给java脚本,然后生成工作页面本身。

之后,我试图让它基于AJAX请求工作,但失败了。就目前情况而言,我从数据库中获得了正确的信息,但它不更改echo "var region_list = ". $js_region_list . ";\n";的值,从而阻止页面更新。

我脚本中的PHP部分:

代码语言:javascript
复制
if(isset($_POST["campaign_id"])){
// Get variables and sanetize
$campaign_id = preg_replace('#[^0-9]#i', '', $campaign_id);

// Create planet list
$planet_list = array();
$sql = "SELECT planet_nr, size, moon FROM planets WHERE campaign_id = $campaign_id";
if ($result = mysqli_query($db_conx, $sql)) {
    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        array_push($planet_list, array($row["planet_nr"],$row["size"],$row["moon"]));
    }
    /* free result set */
    mysqli_free_result($result);
}

// Create region list
$region_list = array();
$sql = "SELECT planet_id, region_id, region_type, owner FROM regions WHERE campaign_id = $campaign_id";
if ($result = mysqli_query($db_conx, $sql)) {
    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        array_push($region_list, array($row["planet_id"],$row["region_id"],$row["region_type"],$row["owner"]));
    }
    /* free result set */
    mysqli_free_result($result);
}

// Convert array's for use in java
$js_planet_list = json_encode($planet_list);
$js_region_list = json_encode($region_list);

$list = array($planet_list, $region_list);
$list = json_encode($list);
echo $list;
exit();

javascript部分:

代码语言:javascript
复制
<?php
echo "var planet_list = ". $js_planet_list . ";\n";
echo "var region_list = ". $js_region_list . ";\n";
?>
var ajax = ajaxObj("POST", "campaign.php?c="+campaign_id);
ajax.onreadystatechange = function() {
    if(ajaxReturn(ajax) == true) {
        if(ajax.responseText == "Fail"){
            alert(ajax.responseText);
        }
    }
}
ajax.send("campaign_id="+campaign_id);

注意:这些只是整个脚本的片段。整个脚本位于同一个PHP文件中,上面的PHP位于它的标记和脚本标记之间的java向下。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-22 20:30:05

在ajax成功部分中,只需更新变量planet_list和region_list的值,如下所示

代码语言:javascript
复制
planet_list = JSON.parse(ajax.responseText[0]);
region_list = JSON.parse(ajax.responseText[1]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44120481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档