2010-09-08 201 views
12

我想使用jQuery AJAX將JSON發送到PHP文件,基本上我想要做的是獲取一組子元素的值和id,然後將它們分配給JSON對象,然後通過ajax將該對象發送給PHP文件,該文件然後將其處理並將其輸入到數據庫中。使用jQuery通過AJAX發送JSON到PHP

這裏是我的代碼,

的Javascript/jQuery的:

function test(){ 
    var selects = $('#systems_wrapper').find('.dropDowns'); 
    var newArray = new Array(); 

    selects.each(function(){ 
     var id = $(this).attr('id'); 
     var val = $(this).val(); 
     var o = { 'id': id, 'value': val }; 

     newArray.push(o); 
    }); 

    $.ajax({ 
      type: "POST", 
      url: "qwer.php", 
      dataType: 'json', 
      data: { json: newArray } 
     }); 

} 

PHP:

<?php 
    $json = $_POST['json']; 
    $person = json_decode($json); 

    $file = fopen('test.txt','w+'); 
    fwrite($file, $person); 
    fclose($file); 

    echo 'success?'; 
?> 

它創建的文件,但它是完全空白的,任何想法可能是?

Thanx提前!

+1

在您的''調試'print_r($ _ POST);'檢查JS是否正常。在你的'$ .ajax()' – Zlatev 2010-09-08 12:39:17

+0

中你不需要'dataType:'json''我收到一個數組,返回數組 ( [0] => stdClass Object ( [id] => mail_1 [值] => 150升眼鏡蛇(G2) ) [1] => stdClass的對象 ( [ID] => mail_2 [值] => CPC1518 ) ),我在努力處理它,但我可以像這樣訪問數組,例如$ array [0] ['id']? – Odyss3us 2010-09-08 12:57:40

+0

當我print_r($ _ POST),雖然我得到這個...陣列 ( [json] => [{「id」:「mail_1」,「value」:「150 Liter Cobra(G1)」},{「id」:「mail_2」,「value」:「200 Liter Cobra (G1)「}] ) – Odyss3us 2010-09-08 13:01:13

回答

18

您可以嘗試使用JSON.stringify()方法將您的數組自動轉換爲JSON。只需傳遞此輸出即可。

data: { json: JSON.stringify(newArray) } 

希望這有助於

+14

Upvotes for「automagically」。 – Jish 2012-11-20 16:06:52

+0

我愛魔術:D +1 – imperium2335 2013-03-14 11:10:55

+0

@jish剛剛做過。新的最喜歡的詞。擊敗流感。 – copilot0910 2013-11-10 19:12:33

1

你應該設置你的Ajax張貼的contentType。我會使用contentType:「application/json」;

1

您應該使用json_encode()而不是json_decode()!這樣你將得到json字符串並能夠寫入它。

1

如果要將它保存到文本文件中,則不需要使用json_decode。 jQuery以JSON格式對數組進行編碼,PHP應該直接將該格式寫入文本文件。當你想打開該文件並以可用的方式訪問數據時,將其內容讀入一個變量,然後在其上運行json_decode()。

2

請勿使用數組。
使用一個簡單的字符串是這樣的:

var o = '['; 
selects.each(function(){ 
    var id = $(this).attr('id'); 
    var val = $(this).val(); 
    o += '{ "id": "'+id+'", "value": "'+val+'" },';  
}); 
o = o.substring(0,o.length-1); 
o += ']'; 

,並在AJAX只是發送字符串 'O'

 data: { json: newArray } 

在PHP文件只是做一個json_decode($ JSON,真正的);
它將返回一個數組,您可以通過foreach訪問
如果要查看數組,請使用var_dump($ person);