2014-08-29 53 views
0

我在我的服务器中有一个xml文件,我想用php提取一个ID列表,然后使用json_encode()将该数组转换为JSON,并将它放在一个$_SESSION变量中,以使这个清晰我的理想JS功能是:与json数组的SESSION变量

function getIDs() { 
    var x = <?php if(isset($_SESSION['IDs'])) echo $_SESSION['IDs']; ?>; 
    if(x == '') { 
     $.post('getPL.php','PL_name=cool&q=IDs',function(responseText){ 
      x = responseText; 
     }); 
    } 
    //some other code 
    //return array; // this is an array i use later in js 
} 
我getPL.php

我有:

$videos_list = $theOne->parentNode->parentNode->getElementsByTagName('video'); 
    for ($i = 0; $i < $videos_list->length; $i++) { 
     $a = $videos_list->item($i); 
     $id_out = $a->getElementsByTagName('id')->item(0)->nodeValue; 
     $array[$i] = $id_out; 
    } 
    $IDs = json_encode($array); 
    $_SESSION['IDs'] = $IDs; 
    echo $IDs; 
    break; 

如果我提醒var x = <?php if(isset($_SESSION['IDs'])) echo $_SESSION['IDs']; ?>;我得到g8M8kxuaCWk,VWrBFt46J18

但是当我提醒responseText的我得到["g8M8kxuaCWk","VWrBFt46J18"]

所有我想要的是从XML文件中提取的ID,并把它们放到一个JS数组对象

,如果有什么需要更多的告诉我

+0

你可以发布'console.log(x)'和'console.log(responseText)'而不是'alert()'的结果吗? – jeroen 2014-08-29 14:21:13

+0

@ jeroen从来没有我修复它检查我的答案 – Fanckush 2014-08-29 14:22:00

+1

是的,我错了,'alert()'结果把我扔了...奇怪,虽然jQuery没有解析从你的ajax请求自动返回json。您也可以手动设置,至少在使用'$ .ajax()'时。 – jeroen 2014-08-29 14:24:18

回答

0

确定我固定它 所以var x = '<?php if(isset($_SESSION['IDs'])) echo $_SESSION['IDs']; ?>';会给我一个数组,这是什么其实我是想 但alert(resposeText);实际上是给了我一个字符串,所以我这样做JSON.parse(responseText); 感谢谁帮我得到这个答案

后,这两种情况下,如果我alert(obj[0]);我得到的第一个元素,因此正在

我的理想JS功能变成:

function getIDs() { 
    var x = <?php if(isset($_SESSION['IDs'])) echo $_SESSION['IDs']; ?>; 
    if(x == '') { 
     $.post('getPL.php','PL_name=cool&q=IDs',function(responseText){ 
     x = JSON.parse(responseText); // this is the difference 
     }); 
    } 
    return x; 
} 
function getIDs() { 
    var x = <?php if(isset($_SESSION['IDs'])) echo $_SESSION['IDs']; ?>; 
    if(x == '') { 
     $.post('getPL.php','PL_name=cool&q=IDs',function(responseText){ 
     x = JSON.parse(responseText); // this is the difference 
     }); 
    } 
    return x; 
} 
0

我认为你需要的认沽报价约于PHP代码在你的JS,如:

var x = '<?php if(isset($_SESSION['IDs'])) echo $_SESSION['IDs']; ?>'; 
+0

即使我想把报价(我试过),他们必须是双引号''''不'''为了避免与''ID''冲突 – Fanckush 2014-08-29 14:13:06

+0

好吧,你可以逃脱ID号码quatos像 $ _SESSION [\'ID \']用这种方法,您可以从php输出中获得json编码的字符串。应该是'不是'json格式字符串的结果。 – 2014-08-29 14:20:37

+0

谢谢反正,我解决了问题,检查我的答案,问题不是与那条线它与responseText – Fanckush 2014-08-29 14:22:42