2017-01-02 27 views
0

JSON我對類型的內容「條件內容」的基礎,就像這樣:轉儲PHP數組作爲的條件內容

//--- Here goes a nice SQL where I get the content, this works ok. --- 
if(mysqli_num_rows($niceSQL) > 0) { 
    while($something = mysqli_fetch_array($niceSQL)) { 

     $type = $something["type"]; 

     if ("type" == "A") { 
      $data1 = $something["data1"]; 
      $data2 = $something["data2"]; 
      $data3 = $something["data3"]; 

      $something_A = array(
       "one" => $data1, 
       "two" => $data2, 
       "three" => $data3, 
      ); 

      echo json_encode($something_A, JSON_FORCE_OBJECT); 
     } else if ("type" == "B") { 
      $data1 = $something["data1"]; 
      $data2 = $something["data2"]; 
      $data3 = $something["data3"]; 

      $something_B = array(
       "one" => $data1, 
       "two" => $data2, 
       "three" => $data3, 
      ); 

      echo json_encode($something_B, JSON_FORCE_OBJECT); 
     } 
    } 
} 

我試圖轉儲每個數組作爲JSON用於處理它jQuery每個。

問題是所有被 「印」(呼應)在同一時間,所以AJAX響應是 「parsererror」。我得到這樣這個錯誤:

(ajax and config here).fail(function(jqXHR, textStatus) { 
    console.log("Request failed: " + textStatus); 
}) 

所以,我怎麼能打印每$something_A$something_B獨立,但在一起嗎? Together意味着只有一個Ajax請求,所以我可以使用jQuery Each處理內容。如果我只打印第一個$something_A或第一個$something_B然後我可以做「每個」循環(這就是爲什麼我假設PHP「json_encode」函數工作正常),但它對我沒有用(因爲我'只接收許多「事物」中的第一個)。

注意:我可以改變轉儲的邏輯,而不是如何獲取內容(SQL + while)。

+0

收集數組中的所有值並對其進行編碼。 –

+0

這會產生一個帶有_n_陣列的數組。 –

+0

是的,你需要什麼? –

回答

1

只能發送每AJAX請求一個JSON輸出

創建具有2個屬性'A''B'是每個空陣列然後推外主陣列每一行以適當的一個,以及循環後回顯主控陣列

$output= array(
    'A'=>array(), 
    'B'=>array() 
); 

while($something = mysqli_fetch_array($niceSQL)) { 

    $type = $something["type"]; 

    if ("type" == "A") { 
     ....... 
     $output['A'][] = $something_A; 

    } else if ("type" == "B") { 
     ...... 
     $output['B'][] = $something_B; 
    } 
} 

echo json_encode($output); 

然後在jQuery中你有一個單一的對象wi第2個屬性是每個數組

+0

沒有這個運氣。該陣列正在推進新的數據,但也添加了舊的元素。 –

+0

「老元素」是什麼意思?聽起來就像你在處理2個不同的問題。 – charlietfl

+0

是的,完全看起來像那樣。使用Chrome,如果我移動到「網絡選項卡> load.php」(帶有SQL和數組的文件),我會看到JSON輸出。當我檢查http://jsonlint.com/中的JSON時,它向我顯示了這個錯誤:http://i.imgur.com/ldkSzBB.png這就是我試圖解決的問題。那件事一遍又一遍。 –

1

在開始的時候,創建一個新的數組:$result = []; 然後在while循環,改變echo json_encode($something_A, JSON_FORCE_OBJECT);$result[] = $something_A; 循環,使用後:echo json_encode($result, JSON_FORCE_OBJECT);

+0

是的,我已經試過那。我發現的唯一問題是現在我得到了其他數組中的所有結果。所以jQuery的每個函數都無法正常工作。 –

0

這會讓echo在腳本的到底是什麼?

  1. 更換你echo json_encode($something_A, JSON_FORCE_OBJECT);echo json_encode($something_B, JSON_FORCE_OBJECT);array_push($mySolutionArray, $something_)
  2. 在腳本的末尾放置:echo $mySolutionArray

不要忘記初始化$mySolutionArray