2013-02-26 28 views
0

即使我正在回覆,我的問題也一直在被拋棄,所以我將重建我的問題,希望有人能看到我的錯誤並幫助我。我會盡量做到儘可能徹底。從jQuery到JSON到PHP

第1步:我有以下形式命名divisionsLarge數組:

divisionsLarge = [{ "car":"Toyota", "color":"blue", "numberTires":"four" }, { "car":"Honda", "color":"red", "numberTires":"four"}, etc. etc. ... ] 

(這個數據是虛構的,但它是錯的地方(也忽略numberTires被存儲爲事實的過程一個字符串而不是整型,它是虛構的人:P)

無論如何,我有上述條目92條,所有使用相同的按鍵:車,顏色和numberTires

現在,我經歷了陣列與以下功能循環,以建立一個陣列,只是汽車& numberTires鍵:

var divisions = []; 
for (var i = 0; i < divisionsLarge.length; i++) { 
    if(divisionsLarge[i].numberTires != "two"){ 
      var obj = { "car": divisionsLarge[i].car, 
         "numberTires": divisionsLarge[i].numberTires}; 
      divisions.push(obj);} 
    } 

好吧,在這一點上,我覺得一切都很好走。如果我用螢火的控制檯,輸入divisions[0]我得到一個漂亮的對象包括,例如,

Object { car = "Toyota", numberTires = "four"} 

(我覺得還是有""圍繞汽車& numberTires項,這只是螢火顯示器如何對象,我可能是錯的)

現在,這是我需要幫助。我創建了更多的.ajax查詢,而不是我可以計數的。我使用JSON.stringified,我沒有使用過JSON.stringified,我用過json_decode(),我剛剛完成了print_r($ _ POST)...我做了很多事情,我完全無法分析什麼影響什麼,以便診斷問題可能是什麼。看來我的.ajax POSTS可能是錯誤的,似乎我的PHP可能是錯誤的。所以這裏是我非常感謝被回答的問題:

1)divisions數組是由JavaScript認爲是JSON創建的,還是以易於轉換爲JSON的格式創建的?

2)我的AJAX調用需要什麼?我嘗試了很多AJAX調用,我不知道什麼是正確的/錯誤的。此外,請使用divisions而不是上面提供的陣列片段,因爲divisions陣列是由divisionsLarge中包含的內容動態生成的。

3)我的divisions.php PHP文件需要看起來像什麼?現在它有一個HTML框架與<script></script>標籤divisionsLarge.jsdivisions.js [這些需要在一個.js文件?]我已經看到空白頁和Array()很長時間,我甚至懷疑其餘的PHP現在文件。

4)如何獲得,例如,第一個索引的顏色值?這看起來很簡單,但我看到的大多數例子只是查詢一個對象的數組,例如, echo $_POST["color"],但我有color多個條目,所以我不知道如何才能問第一個。我想知道這一點,主要是因爲我在測試陣列是否正常工作方面取得了如此糟糕的成功 - 我已經失去了對print_r($_POST)var_dump($json)的所有信心。

+0

一個有用的觀點:我想你可能想看看http://stackoverflow.com/questions/206988/how-do-i-unset-an-element-in-an-array-in-javascript看看如何輕鬆取消數組的元素而不是再次構建它。 – 2013-02-26 02:56:56

+0

我打算髮表評論,關於我如何知道可能有一種更簡單的方法來用內置方法拆分陣列,但是那個怪物在我身上傾注了一些東西,使我的心靈和靈魂變得精煉哈哈。現在,如果它返回的是不可用或不易轉換爲JSON的東西,那麼我會立即拋出它^^ – Kris 2013-02-26 03:01:48

+0

老實說,我還不確定 - 但目標是消除所有未知因素。我寧願從一個已知的好json數組中移除元素 - 比重建一個元素。如果您將該鏈接的解決方案更換爲 - 如果它仍然給您帶來悲傷,您可能會對此發表評論。 – 2013-02-26 03:04:16

回答

1

好的,首先你的問題。然後代碼:

1.- Divisions不被視爲JSON,它只是一個對象數組。所有JavaScript對象都可以使用JSON.stringify()輕鬆轉換爲JSON;看看下面的代碼。

2.-看下面的代碼。

3.-我不確定你的PHP需要什麼類型的處理。下面的代碼假設您將此內容發佈到另一個頁面,您將在其中進行一些處理並輸出一些內容,您可以在complete函數中使用該內容。

4.-看下面的代碼。

我想這是你想要做什麼:

的Javascript現在

divisionsLarge = [{ "car":"Toyota", "color":"blue", "numberTires":"four" }, { "car":"Honda", "color":"red", "numberTires":"four"}]; 

var divisions = []; 


for (var i = 0; i < divisionsLarge.length; i++) { 
    if(divisionsLarge[i].numberTires != "two"){ 
      var obj = { "car": divisionsLarge[i].car, 
         "numberTires": divisionsLarge[i].numberTires}; 
      divisions.push(obj);} 
    } 

//I am just going to send one of your array elements as a JSON object. 
var postData = JSON.stringify(divisions[0]); 
var url = "url where you want to post your data"; 

$.ajax(url, { 
    type: "POST", 
    data: { "jsonBeingSent" : postData }, 
    success: function(data) { 
     //Do whatever you need to do with your PHP output here. 
     //If you are using something like my php sample then you will be receiving a JSON object(s) 

    } 
}); 

,在你的PHP你可能想是這樣的:

<?php 

    //You may want to do some checking about the sender, and so on. 
    $receivedData = json_decode($_POST['jsonBeingSent']); 

    //You should see something like this if you print_r $receivedData 
    // object(stdClass) { 
    //  [car] => ... 
    //  [numberTires] => ... 
    // } 

    //So you could access the car value like this 
    echo $receivedData->{'car'}; 

    //Do your processing and then, if you are using an array or object you can use `json_encode()` to output your data. 

?> 

希望有所幫助。

+0

使用你的ajax,用'divisions.php'替換'你想要發佈數據的'url,使用你的php並試過到'print_r($ receivedData);',我得到的只是一個空白的屏幕,FireBug甚至沒有註冊POST。 – Kris 2013-02-26 04:32:19