2014-08-29 30 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