2013-07-11 78 views
0

我想寫基於填寫表格寫JSON使用jQuery和Ajax和PHP

所以我用的jQuery的表格轉換成合法的JSON外部庫中的JSON文件的文件。 當我console.log輸出,我得到一個有效的json數據返回。

所以每當我把數據傳送到一個PHP使用$就和寫的內容到一個文件 的PHP保存文件,但裏面它只是說「NULL」

這裏是我的AJAX:

$(document).ready(function() { 
    var json = $("#user-form").serializeJSON(); 
    $.ajax({ 
     url: "writejson.php", 
     type: "POST", 
     data: json, 
     processData: false, 
     contentType: 'application/json' 
    }); 
}) 

這裏是我的PHP:

<?php 
    $myFile = "kiosk.json"; 
    $fh = fopen($myFile, 'w') or die("can't open file"); 
    fwrite($fh,var_export($_POST['data'], true)); 
    fclose($fh); 
?> 

,這裏是什麼輸出文件說:

NULL 

我試着先在這裏查找並嘗試了很多選項,但沒有一個似乎保存了正確的數據。 真的很奇怪。

在此先感謝!

+0

'$ _POST ['data']''null',如預期的那樣。你不發送發佈數據,你發送一個字符串作爲請求主體。 –

+0

這是真的,這和下面的帖子我不得不首先串聯JSON。 – Shuyinsama

回答

1

你總是可以的JSON字符串從這個

var json = $("#user-form").serializeJSON(); 

改變這種

var json = {data: $("#user-form").serializeJSON()}; 

這樣,當您嘗試檢索$ _ POST [「數據」],它會被設置,因爲你已經定義了它。

編輯:由Shuyinsama重要的一點 - 指出,你必須張貼到PHP之前使用的JSON對象JSON.stringify方法:

在我而言,這是我做過什麼:

var jsontext = JSON.stringify($("#user-form").serializeJSON()); 

var json = {data: jsontext}; 

然後使用第一個PHP文件將其寫入有效的JSON文件中。

永遠記住,你可以使用json_decode();在PHP中,如果你需要做你的JSON數據的一些處理,並json_encode();,分別。

+0

同樣的問題輸出只是 NULL – Shuyinsama