2013-07-09 71 views
-1

我有),這是動態無法PHP多維數組轉換爲Javascript數組

Array 
(
    [0] => Array 
     (
      [cid] => 73 
      [type] => 2 
      [qrystr] => Qtest1 
      [trck_no] => (570) 244-3738 
      [trgt_no] => 1919674683063 
      [webpage] => Array 
      (
       [0] => Array 
        (
         [wid] => 40 
         [page_url] => www.ctest2.com 
        ) 
       [1] => Array 
        (
         [wid] => 41 
         [page_url] => www.ctest3.com 
        ) 
      ) 
    ) 
[1] => Array 
    (
     [cid] => 75 
     [type] => 3 
     [qrystr] => Qtest6 
     [trck_no] => 
     [trgt_no] => 
     [webpage] => Array 
      (
       [0] => Array 
        (
         [wid] => 42 
         [page_url] => www.test1.com 
        ) 
       [1] => Array 
        (
         [wid] => 43 
         [page_url] => www.test1.com 
        ) 
      ) 
    ) 

生成的PHP多維數組

,我想將其轉換在Javascript。對於我已經編碼它使用的PHP json_encode()這裏是相同的輸出:

[{"cid":"73","type":"2","qrystr":"Qtest1","trck_no":"(570) 244-3738","trgt_no":"1919674683063","webpage":[{"wid":"40","page_url":"www.ctest2.com"},{"wid":"41","page_url":"www.ctest3.com"}]},{"cid":"75","type":"3","qrystr":"Qtest6","trck_no":"","trgt_no":"","webpage":[{"wid":"42","page_url":"www.test1.com"},{"wid":"43","page_url":"www.test1.com"}]}] 

在javascript中,每當我分析這個使用JSON.parse()我得到一個錯誤信息(即語法錯誤:JSON.parse:意外的字符)。

請提出建議。

編輯:

我的PHP文件是在單獨的服務器,並在那裏pogramatically我根據「身份證」,從數據庫中收集信息並將其存儲在一個數組。

這裏是我的PHP代碼:

  foreach($campaigns as $campaign){ 

     if(($campaign->type == 2) || ($campaign->type == 3)){ 
      foreach($campaign->webpage as $webpage){ 

       $webpages[] = array(
           'wid'=>trim($webpage->id), 
           'page_url'=>trim($webpage->page_url) 
          ); 

      } 
     }else{ 
      $webpages = ""; 
     } 

     $campaign_details[] = array(
           'cid'=>trim($campaign->id), 
           'type'=>trim($campaign->type), 
           'qrystr'=>trim($campaign->qrystr), 
           'trck_no'=>trim($campaign->trcknmb->frnd_name), 
           'trgt_no'=>trim($campaign->trcknmb->trgtnmb->phone_no), 
           'webpage'=>$webpages 
          ); 
     unset($webpages);     

    } 

      $cdetails = json_encode($campaign_details); 
    echo $cdetails; 

我做一個跨域請求,以獲得陣列VALU。

這裏是我的Javascript代碼來解析JSON字符串:

  function handler(evtXHR) 
      { 
      if (invocation.readyState == 4) 
       { 
       if (invocation.status == 200) 
       { 
        response = invocation.responseText; 
        var content = JSON.parse(response); 
        alert(content); 
       } 
       else 
       { 
        alert("Invocation Errors Occured"); 
       } 
       } 
      } 

我把警報功能,這裏檢查的輸出結果。

+0

顯示更多代碼你正在做什麼。 – deceze

+0

我編輯了我的查詢。 @deceze – user2198137

+0

嘗試通過jslint運行您的輸出並查看是否有任何問題? –

回答

0

你沒有引用JSON作爲字符串嗎?否則,當我做了同樣的json工作

JSON.parse('<your stuff>'); 
3

在Javascript中,你不需要解析它,因爲它是一個有效的Javascript數組。

簡單:

var myData = <?php echo json_encode($data); ?>; 

for(var i=0; i<myData.length; i++) { 
    console.log(myData[i].cid); 
    console.log(myData[i].type); 
    console.log(myData[i].webpage[0].wid); 
} 

最有可能你得到的錯誤,因爲有一個與當你調用JSON.parse引述JSON的一個問題。

+0

是真的,但是用JS解析它可能不是一個壞主意。看到這個:http://stackoverflow.com/questions/6765106/is-json-parse-really-safer-than-eval-when-web-page-and-ajax-call-come-from-s – David

+1

@大衛陣列文字!=='eval'。如果該值是正確的JSON編碼,只要將其視爲字面值即可。 – deceze

+0

@David解析它沒有任何好處,並且欺騙指出通過這種方式傳遞它沒有任何安全性問題。 – MrCode

0

您是否將"更換爲\"?因爲我沒有執行問題:

JSON.parse("[{\"cid\":\"73\",\"type\":\"2\",\"qrystr\":\"Qtest1\",\"trck_no\":\"(570) 244-3738\",\"trgt_no\":\"1919674683063\",\"webpage\":[{\"wid\":\"40\",\"page_url\":\"www.ctest2.com\"},{\"wid\":\"41\",\"page_url\":\"www.ctest3.com\"}]},{\"cid\":\"75\",\"type\":\"3\",\"qrystr\":\"Qtest6\",\"trck_no\":\"\",\"trgt_no\":\"\",\"webpage\":[{\"wid\":\"42\",\"page_url\":\"www.test1.com\"},{\"wid\":\"43\",\"page_url\":\"www.test1.com\"}]}]") 
+1

但是值可以用單引號表示'{「a」:「很好」}} – Diryboy