2012-01-02 55 views
0

我可以使用Ajax Post將數組成功地發佈到PHP,但是我想擴展這個功能來發佈一個對象數組,而不是一個值..數組的數組..努力尋找如何做到這一點的明確例子。如何使用Ajax Post將JSON中的對象數組發佈到PHP?

這裏是我很張貼從jQuery/JavaScript客戶端腳本值的數組:

var placesfortrip = {}; 
placesfortrip["place"+counter] = inputVal; 

//note counter is an int that gets incremented for each value 
//inputVal is a string with the new value to be added 

var inputVal = jQuery("#edit-location").val(); 
      jQuery.ajax({ 
      url: "/createtrips/updateitin", 
      type: 'POST', 
      data: placesfortrip, 
      dataType: 'json' 
      }); 

然後在PHP一邊,我看這樣的數據:

$citynames = array(); 

    foreach ($_POST as $key=>$value) { 

    $citynames[$key]= $value; 

    } 

如何我修改上述發佈的對象數組而不是值? 我特別困惑於如何從PHP端讀取對象數組。

回答

1

你可以試試這個代碼發送您的數據PHP文件

var status = document.getElementsByName("status")[0]; 
    var jsonObj = []; //declare array 

    for (var i = 0; i < status.options.length; i++) { 
     jsonObj.push({id: status.options[i].text, optionValue: status.options[i].value}); 
    } 

然後替換該行

data: placesfortrip, 

data: jsonObj, 

其他幫助你也可以幫助這個

大多數流行的JavaScript框架都包含JSON實用功能。舉例來說,jQuery有一個直接調用一個網址,並加載JSON結果爲對象的功能:http://docs.jquery.com/Getjson

但是,你可以從JSON網站上的開源JSON解析器和stringifier:

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

然後,只需包含代碼並在您的數組上使用JSON.stringify()方法即可。

+0

感謝例如嗨, – Rowan 2012-01-03 15:05:53

+0

嗨感謝您的例子,這聽起來像鑰匙傳遞* string *表示正確格式的對象數組。我的XHR帖子似乎顯示了一個查詢字符串(但方括號以十六進制值的形式傳遞),Firebug中的XHR post標籤似乎顯示的值爲objarray1 [object1] = <> objarray1 [object2] = <>。 .etc這看起來不錯..所以我的問題可能是我如何獲得PHP中的值..到目前爲止,它看起來像正確的格式是張貼在json – Rowan 2012-01-03 15:12:53

0

你應該能夠對象發佈到服務器,並使用json_decode($ _ POST ['some_key「])來使用,作爲一個數組/對象的服務器上

0

你也可以忘記json並按原樣發佈數組。例如。在JavaScript中:

var slideShowImages = new Array(); 
var image = {}; 
image['id'] = 1; 
image['title'] = "Title 1"; 
slideShowImages[0] = image; 

等在javascript中填充整個數組。 然後Ajax調用爲:

$.ajax({ 
    type : 'POST', 
    url: BASE_REQUEST_URL + 'apiModule/performAddEditSlideShow', 
    cache: false, 
    data: { 
    images: slideShowImages 
    } 
}); 

然後在PHP中,簡單地遍歷它:

$images = $_POST['images']; 
foreach($images as $image) { 
    $title = $image['title']; 
} 
相關問題